PHP脚本在没有错误的情况下超时结束
我有一个PHP脚本,它需要至少1000秒的执行时间才能完成。PHP脚本在没有错误的情况下超时结束
每次大约265秒后终止,没有错误。由于我正在使用循环,因此我测试了迭代次数,并且与循环次数无关,进一步排除了循环中出现错误的可能性。
我已经在php.ini中将max_execution_time设置为10800,并且还更改memory_limit不会影响结果。
请帮忙!我彻底挠了挠头!
你检查了你的日志文件吗?如果您收到错误6或分段错误。然后你的脚本实际上是崩溃的PHP,而不会在浏览器上显示任何错误(如果它是浏览器而不是cli)。
如果您在unix上使用apache,那么您应该在/var/log/apache2/error.log
中找到此日志。
否则,可以通过加入这一行定义日志文件的路径.htaccess
:
php_value error_log "/path/to/somewhere/convenient/php_errors.log"
更改路径的地方在那里你的httpd具有写权限,并在那里你读取权限。
得出:
set_time_limit(0);
在脚本的开头
。以便代码执行不会超时,除非完成。
我想他说他已经排除了暂停。 – 2012-03-18 18:24:21
没有帮助..它是无法贯穿整个10800s的时间.. – 7HUND3RX 2012-03-18 20:25:59
@AshishAgrawal显示您的代码有问题。 – mithunsatheesh 2012-03-19 03:44:24
这同样的错误发生在我身上。我的一个PHP函数在没有任何错误发送到stderr,stdout或任何其他日志文件的情况下死亡。
发生了什么是我正在使用由其他开发人员编写的助手PHP脚本,该脚本将内存限制设置为通过我的程序操作的一半的512MB内存。在处理我的脚本的过程中,通过将错误日志设置设置为无声,子模块中毒了该井。
通过在循环的每次迭代中打印出可用于PHP脚本的php系统设置,可以证明这是否发生在您身上。当下标执行脏操作时,PHP引擎在垃圾收集器将来运行在随机点后抛出适配器,然后立即死亡而没有错误。这是PHP垃圾收集器中的一个错误,当垃圾收集器正在完成其工作时,子模块会混淆系统设置。
解决方案:编辑php helper子模块,并确保它们不会调整系统设置,因为垃圾回收器正在完成其工作。在PHP系统变量中毒之后,PHP解释器会出错并死掉,没有任何错误或以随机间隔输出。
在PHP,以隐藏即使display_errors和error_reporting正确指出记录错误的唯一方法是使用Error Control Operators,
例如:下面的代码将引发一个致命错误,但一个“隐藏”一,它不会出现在日志或浏览器上。
@echo "forgetting the last quote;
所以的display_errors值设置为开,您正在使用依赖于PHP版本的error_reporting(见差异here),并检查是否使用的是在你的代码中的“@”符号。
你的代码是做什么的?你确定没有错误吗?您是否将错误显示设置为E_ALL?你有没有用'@'操作符来抑制任何错误? – 2012-03-18 18:11:16
确保它不会引发错误。你看过日志文件吗? – Neysor 2012-03-18 18:13:12
你是从命令行,cron作业,web服务器等运行的吗?你有没有尝试过一种不同的调用方法? – dldnh 2012-03-18 18:13:57