PHP-Divide et Impera以避免致命错误:超过了最大执行时间


PHP - Divide et Impera to avoid Fatal Error: Maxim execution time exceeded

大家好!

我正在建立一个"搜索者",从7个网站获得一些价格。我正在使用cUrl获取此价格,并且正在处理此问题:致命错误:超出了最大执行量。我读过这方面的文章,看到了一些解决方案,但我想知道我是否可以将流程划分得比实际情况更多。所以这是我的应用程序:

客户在我的网站上输入,搜索一些商品代码(最糟糕的情况是5个不同代码中的一个(,并发送价格请求。因此,我将一个最多5个代码的数组发布到我的MainController,它将数组分布在每个控制器上,如下所示:

$codesArray -> MainController -> foreach(ControllersList as Controller){Controller->getPrices($codesArray)}

我认为时间执行分布错误,或者不是我想要的,因为我已经用3个代码测试了它,并且第五个控制器上的"致命错误:最长执行时间:30秒">从一开始就是33秒。我认为不可能在3秒内搜索3个项目4次,并在第五次超过,所以这意味着服务器正在计算MainController进程,而不是每个进程本身。我的问题是,如何正确划分流程,以获得每个控制器的时间分布?

我希望我能让自己理解,为糟糕的英语和糟糕的解释感到抱歉。

注意:我用7个代码的数组测试了每个控制器,但我从未遇到过这个致命错误,这就是为什么我想划分过程,但我不确定如何划分。。

注意II:一次发送一个代码将导致n*7次curl执行,因为对于数组,该过程只重复搜索功能,而不是整个连接到网站->检查登录->登录*->搜索

计时器作为一个整体与请求相关,不会在不同的控制器调用上拆分。整个执行时间不能超过30秒(您可以在php.ini中增加时间限制。而且,它们不是多个进程:PHP是单线程的,所以你不能生成另一个线程并运行它。你可以尝试使用curl_multi_init()并行调用,然后进行处理(我假设调用比实际处理花费更多的时间(。