所有人!
我正在建设一个“探索者”从7个网站获得一些价格。我正在使用cUrl来获得这个价格,并且我正在处理这个问题:致命错误:最大执行超过。我读过这方面的文章,并看到了一些解决办法,但我想知道我是否能把这个过程划分得比现在更多。这是我的应用程序:
客户进入我的网站,搜索一些代码的项目(最坏的情况是其中之一,5个不同的代码一次),并发送一个价格的要求。因此,我向我的MainController发布了最多5个代码的数组,该数组分布在每个控制器上,如下所示:
$codesArray -> MainController -> foreach(ControllersList as Controller){Controller->getPrices($codesArray)}
我假设时间执行是错误的,或者不是我想要的,因为我已经用3段代码测试了它,“致命错误:最大执行时间:30秒__”从开始到第五个控制器的时间是33秒。我认为在3秒内搜索3项是不可能的,并且在第5次超过,所以这意味着服务器正在计算MainController进程,而不是每个进程本身。我的问题是如何正确地划分过程以获得每个控制器的时间分布?
我希望我让自己明白了,对不起,英语不好,解释也不好。
注意:我用一个7码的数组测试了每个控制器,我从来没有得到这个致命的错误,这就是为什么我想要划分这个过程,但我不知道如何。
备注2:发送一段代码一次将导致n*7次的卷曲执行,因为使用数组该过程只重复搜索功能,而不是整个连接到网站->检查登录->登录*->搜索
发布于 2015-08-25 19:13:12
定时器是与整个请求相关的,在不同的控制器调用上是不分裂的。整个执行时间不能超过30秒(您可以在php.ini
中增加时间限制。而且,它们也不是多个进程: PHP是单线程的,所以您不能生成另一个线程并运行它。您可以尝试使用curl_multi_init()
并行地进行调用,然后进行处理(我假设调用比实际处理花费更多的时间)。
https://stackoverflow.com/questions/32210741
复制相似问题