PHP脚本突然终止,Apache状态为200
我有一个CakePHP3脚本,它处理一个大数据集,因此运行一个小时或更长时间。然而,大多数时候脚本在完成之前就已经死了,我找不到原因。通过web浏览器或通过shell中的PHP脚本突然终止,Apache状态为200,php,apache,cakephp,Php,Apache,Cakephp,我有一个CakePHP3脚本,它处理一个大数据集,因此运行一个小时或更长时间。然而,大多数时候脚本在完成之前就已经死了,我找不到原因。通过web浏览器或通过shell中的wget--timeout=0 URL调用时也会发生同样的情况 脚本在处理数据时发送数据,在每个数据记录之后运行flush()。脚本在没有exit()或类似调用的循环中终止 我调查的事情: set\u time\u limit(0),ini\u set('memory\u limit',-1)已设置 调用了寄存器\u shut
wget--timeout=0 URL调用时也会发生同样的情况
脚本在处理数据时发送数据,在每个数据记录之后运行flush()
。脚本在没有exit()
或类似调用的循环中终止
我调查的事情:
set\u time\u limit(0)
,ini\u set('memory\u limit',-1)
已设置
- 调用了
寄存器\u shutdown\u函数()
-不会调用shutdown函数
- 将Apache超时设置为比预期的脚本执行时间长
- 已检查Apache错误日志-未记录任何错误,状态代码为200
- 已检查CakePHP日志-未记录任何错误
- 若MySQL连接被终止,我将得到一个CakePHP错误,所以这不太可能
内存是否不足?即使使用ini\u set('memory\u limit',-1)
您的机器也只有这么多。使用系统监控工具(例如top
)查看。不过HTTP 200很奇怪。这可能意味着您的脚本将以0值退出。我们必须看到它,才能知道它为什么会在您预期之前成功退出。我刚刚尝试手动杀死PHP(kill PID
),Apache显示了相同的状态代码200。我认为有什么东西正在扼杀PHP。但是,如果内存不足,我可能会看到正在调用oom killer,而我在系统日志中没有看到这样的消息?查看apache错误日志。fcgi有一些超时会立即终止进程,这将是无法调用寄存器\u shutdown的一个示例。我在使用Cpanel/WHM,它确实以CGI的形式运行PHP,但是在脚本终止时,apache日志中没有错误。