2014-01-11 245 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的,所以你會得到了解的好處大約多久你進程跑了)