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

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

各位!

我正在构建一个 'Seeker' 以从 7 个网站获取一些价格。我正在使用 cUrl 获取此价格,并且正在处理此问题:致命错误:超出最大执行。我已经阅读了这篇文章并看到了一些解决方案,但我想知道我是否可以比现在更多地划分流程。所以这是我的应用程序:

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

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

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

我希望我能理解,抱歉英语不好,解释也不好。

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

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

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