什么时候脚本结束而没有显示原因?

时间:2011-03-09 00:14:46

标签: php shutdown

我正在使用带有set_time_limit(60 * 60 * 24)的脚本来处理大量图像。但是在1k左右的图像(1或2分钟)之后,脚本会停止而不会在命令行中显示任何错误。

我还使用一个记录器,在关闭时(通过使用register_shutdown_function)将脚本抛出的任何错误写入文件。但是当这个脚本停止时,什么都没写(它应该写一些东西,即使没有抛出任何错误。它与任何其他脚本完美配合,在我曾经拥有的任何其他情况下)。

Apache error_log也没有显示任何内容。

有什么想法吗?

编辑:我的环境是Centos 5.5,带有php 5.3。

3 个答案:

答案 0 :(得分:1)

可能内存不足。

ini_set('memory_limit', '1024M');

如果能分配那么多,可以帮助你。

答案 1 :(得分:1)

请确保您没有以安全模式运行:

http://php.net/manual/en/features.safe-mode.php

答案 2 :(得分:1)

请注意,register_shutdown_function不保证每次都会执行相关的功能。所以你不应该依赖

请参阅http://php.net/register_shutdown_function

要调试该问题,请检查PHP错误日志。 (当你从控制台使用PHP时,这不是apache错误日志。检查你的PHP.ini或ini_get('error_log')以了解它的位置。)

解决方案可能是在bash中编写一个简单的包装器脚本来执行脚本,然后在脚本结束时执行您想要执行的操作。

另请注意,PHP不计算在外部,非php等活动中花费的时间,如网络调用,某些库函数,图像magick等。 因此,您设置的时间限制实际上可能比您预期的要长得多。