Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本突然终止,Apache状态为200_Php_Apache_Cakephp - Fatal编程技术网

PHP脚本突然终止,Apache状态为200

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

我有一个CakePHP3脚本,它处理一个大数据集,因此运行一个小时或更长时间。然而,大多数时候脚本在完成之前就已经死了,我找不到原因。通过web浏览器或通过shell中的
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日志中没有错误。