2014-01-11 156 views
0

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

它看起来像是在一段时间后它只是终止,但是当这种情况发生时应该没有一些错误信息?我怎样才能找出什么是终止我的程序?

注意:我发现了一些时间戳,它似乎是时间事情。通常它运行时间非常接近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')); 

回答

1

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

+0

PHP本身也有脚本执行的时间限制;它默认为30秒。 – Arjan

2

xhprofxdebug可能会帮助您了解您的脚本正在发生什么。根据我的经验,使用php和un-reported这样的退出,尤其是当你在做自定义错误处理时,如下所示。

  1. PHP程序运行的内存
  2. PHP程序引发错误报告,内存已经耗尽
  3. 在编制错误报告的过程中碰到一些其他的内存限制(Apache的,系统等)

我会首先检查你的Apache和系统错误日志,然后用xhprof配置文件的过程(不脚本减慢远远不如Xdebug的,所以你会得到了解的好处大约多久你进程跑了)