PHP程序就此停止

时间:2014-01-11 22:16:22

标签: php

我在GoDaddy托管上有一个非常大的php项目,在日常的cron作业上运行。而且我从中得到了一些奇怪的调试文本。基本上它正在工作,然后它到达真正时间密集的部分,并在那里的内部它停止。输出停止,程序在循环内随机停止,每次在文本输出之间的不同位置停止。没有“死亡”或“退出”在视线范围内,并且被尝试捕获包围。没有错误消息,没有。它似乎永远不会在句子的中间切断,所以我认为它不是一些最大文本输出限制,而是一些超时。

看起来在一段时间限制之后它只是终止,但是当发生这种情况时是否应该没有一些错误消息?我如何弄清楚什么是终止我的程序?

注意:我找到了一些时间戳,这似乎是时间的事情。通常情况下它的实际时间非常接近16分30秒。

注2:我使用此错误处理修改。

set_time_limit(0);

function errorHandler($errno, $errstr, $errfile = null, $errline = null, $errcontext = null)
{
  $message = sprintf("%s: %s, file: %s, line: %s", $errno, $errstr, $errfile, $errline);
  throw new ErrorException($message, 0, $errno, $errfile, $errline);
}
set_error_handler('errorHandler', ini_get('error_reporting'));

2 个答案:

答案 0 :(得分:2)

xhprofxdebug可能会帮助您了解脚本发生的情况。根据我对php和未报告退出的经验,特别是当您进行自定义错误处理时,如下所示。

  1. PHP进程耗尽内存
  2. PHP进程抛出错误报告内存已用完
  3. 在准备错误报告时,进程会遇到其他内存限制(apache,system等)
  4. 我会首先检查您的apache和系统错误日志,然后使用xhprof对进程进行概要分析(它不会像xdebug那样减慢脚本速度,因此您可以获得大致了解如何你的流程运行的时间很长)

答案 1 :(得分:1)

GoDaddy有脚本执行的时间限制。你可能已经达到了时间限制。