【问题标题】:PHP connection timeoutPHP 连接超时
【发布时间】:2012-11-10 06:00:09
【问题描述】:
我正在测试一个复杂的项目,其中涉及多个通过 CURL 相互链接的 php 文件。我运行主函数 15 次。它只运行了 4 次,然后抱怨 Maximum execution time of 30 seconds exceeded。当我查看数据库时,我发现每次运行它时,操作都会执行完全 4 次。会是什么呢?错误出现在我正在调用其他一些 php 文件 $data = curl_exec($ch);
的行上
【问题讨论】:
标签:
php
mysql
performance
curl
timeout
【解决方案1】:
见php.inimax_execution_time设置和调整。 120、240 仍然有意义并且没问题,但不要试图将其设置为 0 以禁用此限制。而是将您的脚本修复为缓存远程文件而不是一直获取它。一般来说,我希望你的设计会被打破。通过 cURL 连接脚本表明您需要 API 或存在其他一些设计问题
【解决方案2】:
其他人已经涵盖了最大执行时间,所以一般的想法:
- 确保没有不必要的循环。如果你完成了一个循环,“打破”它。请记住,您也可以中断多次迭代。
- 我没有尝试过这个(纯粹只是想),但是在执行结束时使用 Ajax 调用来开始下一个执行呢?我敢打赌,因为您正在发出新请求,所以会重新启动执行计时器。
【解决方案3】:
在您的 php 函数的起点设置此函数执行的时间限制。设置 0 表示无限制。
function doWork() {
set_time_limit(0);
/* do your work here */
}
curl 中设置的时间限制:
curl_setopt($ch, CURLOPT_TIMEOUT, 400);
【解决方案4】:
如果您需要请求多个页面,您可以使用 curl_multi_* 同时(并行)完成