2013-05-19 36 views
0

我正在努力通過XML導入數據的腳本。總共有約19,000種產品,分佈在76個文件上,我的腳本遍歷每個文件,解析數據並將其導入數據庫。腳本終止沒有明顯的原因

由於某種原因,腳本終止而不告訴我什麼是錯的。

  1. 我使用error_reporting(E_ALL);ini_set("display_errors", 1);
  2. 我對SQL的錯誤報告,但沒有任何錯誤
  3. 我通過memory_get_usage()跟蹤內存使用情況 - 犯規來設定近memory_limit
  4. 我重置了每個項目的time_limit()並且有充裕的時間

奇怪的是腳本停止在不同的點上,根據我輸出的日誌量。如果我不更改輸出,則腳本會停在同一點。如果我添加(或刪除)額外的日誌記錄(/輸出)腳本停止在不同的點。

它似乎與內存或超時有關,因爲根據輸出在隨機點終止,但我無法弄清楚是什麼導致了它。沒有錯誤信息...

我該怎麼做才能找出問題所在?

更新

似乎錯誤不會顯示在所有的服務器上。我只是強迫一個致命的錯誤(刪除了一個分號),然後我收到瀏覽器消息,說有500服務器錯誤。當我在本地機器上做同樣的事情時,我收到一條真正的錯誤消息。這可能是什麼?當我打印error_reporting()我得到「1」和ini_get("display_errors")顯示我「6143」(這是E_ALL)。我怎樣才能顯示錯誤信息?

我也檢查phpinfo()的時間限制,默認爲30,但是當我phpinfo前加set_time_limit(60);,它表明60所以這一切似乎正確。按照的phpinfo safe_mode熄滅

定時我看到它在12秒後死去的腳本執行後 - 因此,它不能是的時限

+0

你確定你的'error_reporting'和/或'display_errors'設置沒有被重寫嗎? – Jon

+0

'display_errors'只能通過'php設置。ini' – Amir

+0

@Amir它可以用'ini_set'設置 –

回答

0

事實這個錯誤是由無限循環(致命錯誤)引起的,並且由於php.ini中關閉了error_reporting,致命錯誤沒有顯示(如@amir所說)。我設法在我的本地機器上重現了這個問題,並且得到了導致我遇到問題的錯誤。

相關問題