【问题标题】: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设置和调整。 120240 仍然有意义并且没问题,但不要试图将其设置为 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_* 同时(并行)完成

          【讨论】:

            猜你喜欢
            • 2018-12-30
            • 1970-01-01
            • 2015-02-23
            • 2017-06-24
            • 2011-08-17
            • 1970-01-01
            • 1970-01-01
            • 2022-01-21
            • 2010-11-26
            相关资源
            最近更新 更多