我正在使用带有set_time_limit(60 * 60 * 24)的脚本来处理大量图像。但是在1k左右的图像(1或2分钟)之后,脚本会停止而不会在命令行中显示任何错误。
我还使用一个记录器,在关闭时(通过使用register_shutdown_function)将脚本抛出的任何错误写入文件。但是当这个脚本停止时,什么都没写(它应该写一些东西,即使没有抛出任何错误。它与任何其他脚本完美配合,在我曾经拥有的任何其他情况下)。
Apache error_log也没有显示任何内容。
有什么想法吗?
编辑:我的环境是Centos 5.5,带有php 5.3。
答案 0 :(得分:1)
可能内存不足。
ini_set('memory_limit', '1024M');
如果能分配那么多,可以帮助你。
答案 1 :(得分:1)
请确保您没有以安全模式运行:
答案 2 :(得分:1)
请注意,register_shutdown_function不保证每次都会执行相关的功能。所以你不应该依赖。
请参阅http://php.net/register_shutdown_function
要调试该问题,请检查PHP错误日志。 (当你从控制台使用PHP时,这不是apache错误日志。检查你的PHP.ini或ini_get('error_log')以了解它的位置。)
解决方案可能是在bash中编写一个简单的包装器脚本来执行脚本,然后在脚本结束时执行您想要执行的操作。
另请注意,PHP不计算在外部,非php等活动中花费的时间,如网络调用,某些库函数,图像magick等。 因此,您设置的时间限制实际上可能比您预期的要长得多。