【问题标题】:PHP Max execution time is 0 but still times outPHP Max执行时间为0但仍然超时
【发布时间】:2015-07-09 14:33:46
【问题描述】:

我有一个持续超时 45 秒的 php 脚本。我已经完成了我能找到的所有执行时间,目前有以下内容。

在我的 php.ini 中:

max_execution_time = 0

在我的 .htaccess 中:

# set timeout to 10 minutes
<IfModule mod_php5.c>
php_value max_execution_time 600
</IfModule>

并且在超时的脚本中:

ini_set("memory_limit", "-1");
set_time_limit(0);

在脚本中,当我回显 ini_get('max_execution_time') 时,我得到 0,所以看起来一切正常。是否有其他资源限制阻止脚本运行?我研究了 memory_limit、输入时间等,但我认为这里有一些我不知道的东西。

脚本对一个表执行一个while循环,然后根据记录爬取不同的站点。当我将返回限制为 1 或 2 条记录时,它可以正常工作,但它会进入未找到的 404 页面。对我来说,这意味着它超时,但 404 错误是否表明正在发生其他事情?谢谢

【问题讨论】:

  • 你确定是PHP执行的时间限制吗?你有错误吗?您是否试图保持数据库连接打开?需要查看您正在运行的代码才能更好地确定。可能是您与餐桌的连接也在下降。
  • 404 通常表示“未找到”......好像对于其中一条记录,您的处理需要获取不存在的资源。显示一些代码。
  • 如何抓取网站?卷曲?流?还有什么?
  • 在大家的帮助下,我已经将其缩小到使用 phantomjs 的范围内。知道它实际上并没有超时是一个很大的帮助。谢谢!

标签: php


【解决方案1】:

404 错误并不意味着您的脚本超时,它只是意味着您点击的那些 URL 是 Not Found

您需要评估您的脚本,并可能发送HEAD 请求以检查状态代码。

请参阅here 的 HTTP 状态代码列表及其含义。

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 2014-02-21
    • 2011-11-22
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2017-05-01
    • 2021-09-14
    • 2012-11-18
    相关资源
    最近更新 更多