PHP脚本提前结束,没有错误迹象,超时设置为0

PHP脚本提前结束,没有错误迹象,超时设置为0,php,Php,我想是时候再做一次脑筋急转弯了,这是相当罕见的 PHP有硬限制吗?还是在阿帕奇?昨晚我有一个脚本,大约持续了20个小时。然后它就停止了,在一行随机的中间脚本中没有我能找到的错误 设置时间限制(0);是在剧本中设定的,但我开始怀疑在其他地方是否还有20小时左右的限制 有什么想法吗 非常感谢 编辑:这是作为wget运行的 edit2:我会看看内存问题,然后再联系你,谢谢你迄今为止的帮助 edit3:哦,我应该指出,这个脚本正在收集数据并将其存储在一个数组中,它运行的时间越长,存储的数据就越多,所以是

我想是时候再做一次脑筋急转弯了,这是相当罕见的

PHP有硬限制吗?还是在阿帕奇?昨晚我有一个脚本,大约持续了20个小时。然后它就停止了,在一行随机的中间脚本中没有我能找到的错误

设置时间限制(0);是在剧本中设定的,但我开始怀疑在其他地方是否还有20小时左右的限制

有什么想法吗

非常感谢

编辑:这是作为wget运行的

edit2:我会看看内存问题,然后再联系你,谢谢你迄今为止的帮助

edit3:哦,我应该指出,这个脚本正在收集数据并将其存储在一个数组中,它运行的时间越长,存储的数据就越多,所以是的,我有点担心这里的“用尽所有内存”答案


解决方案:为操作设置更大的内存修复了此问题。谢谢大家。

可能是php cli刚刚崩溃或服务器重新启动。我不认为php可以执行那么长时间

我有一个脚本运行了几个月都没有问题。我只是不得不终止进程来终止脚本。因此,如果设置了时间限制(0),则没有限制;在你的代码中。您是否查看了操作系统的系统和调试日志?这可能提供了php或apache崩溃的进一步线索。

可能php在一段时间后内存不足


考虑在循环的每次迭代中强制PHP垃圾收集,这可能会揭示一些线索

既然您使用了wget,我假设它在apache下运行。也许是apache限制了正在运行的脚本,而不是php应用程序


您可以通过从cli版本运行应用程序来测试这一点,正如stillstanding所说,检查apache日志/var/log/error.log,或者在windows中检查“事件”。

检查php.ini文件查找最大执行时间对以秒为输入的部分进行更改


但是在编辑php.ini时要小心

您是作为cli还是从apache(作为mod/cgi)运行的?无意冒犯,但它是私有的:)这是一个需要阅读一些信息的脚本,在20小时内完成大部分(大约85%)但需要更多时间。没有简单的方法来分割信息。Nikic,我运行了一个wget,因为它是一个需要大量包含的网站的一部分,我很懒,不想整理所有的引用。假设你没有在自己的专用服务器上运行,如果a)你的主机由于资源占用而终止了脚本,我不会感到惊讶,或者b)有一个自动脚本用于终止导致服务器上出现峰值或高内存消耗的脚本事实上有多个脚本正在运行,而其他脚本继续运行(它们在不同点运行的时间较短)向我展示服务器没有崩溃,但您可能对php在一段时间后失败的说法是正确的。也许您应该从命令行运行脚本,而不是通过apache。也可能是该脚本的内存消耗太高,您可以使用ini_set('memory_limit','128M')来增加该值;谢谢Christian,我现在来看看当前设置内存使用是否有最大值?或者它是您的系统允许的最高值?它在您的php.ini中定义,我不认为有最大值,我有错误的脚本,无限循环使用高达256 mb:Pimho您的脚本中一定有错误,可能您违反了php内存限制?php内存限制可能更值得怀疑!我没有想到,谢谢。apachetimeout是httpd.conf中的Timeout指令。如果未指定任何值,则默认值为300秒。不幸的是,我没有时间让应用程序运行rom cli,因为include等的路径似乎有所不同(我不记得为什么现在必须离开它,但我记得我首先尝试了cli方式,最后使用wget,尽管我不想太多)时间限制在原始帖子中被声明为禁用。这很有帮助,因为现在我知道PHP可以运行这么长时间