2009-06-23 40 views
0

我正在制定一個一次性PHP(5.2.6)腳本,它將數百萬MySQL(5.0.45)數據庫行遷移到另一個表中的另一個格式,同時保留(很多)相關內存中的數據用於增量計算。數據是逐步計算的。 (大約1000行)更新腳本隨機停止

腳本在隨機點意外停止,沒有錯誤消息。我的問題是 - 我怎樣才能找出腳本停止的原因。 (內存中斷?由MySQL等超時...)

我有set_time_limit(0);所以它不是PHP超時。

+0

你會得到很好的建議。確保你沒有在安全模式下運行,從set_time_limit()文檔頁面:「當PHP在安全模式下運行時,這個函數沒有效果。除了關閉安全模式或改變時間之外,沒有任何解決方法限制在php.ini中。「 http://php.net/set_time_limit – artlung 2009-06-23 15:43:16

+0

謝謝大家。解決方法是添加ini_set('memory_limit','200M');這確實是一個記憶問題。 – Nir 2009-06-24 10:36:54

回答

2

查看日誌文件, 可能是內存

你需要在php.ini中添加更多內存 到memory_limit參數

1

你可以嘗試關閉錯誤報告級別(在php.ini )真的很高,所以它抱怨更多的事情。

我的第一個猜測是你打你的執行時間限制或內存限制,腳本被終止,但你覆蓋了。

1
  • 查看您的PHP日誌文件。
  • 打開所有錯誤報告
    • error_reporting(E_ALL | E_STRICT);
1

您是否嘗試運行命令行,而不是通過網絡瀏覽器的PHP?也許服務器有一些導致它一旦達到特定內存使用率就會崩潰?

在一般情況下,批量操作不應該通過網絡服務器完成,它可能會使部分操作失敗。

0

謝謝大家的幫助(我投了相關答案)。問題是內存和設置ini_set('memory_limit','200M');解決它(這是一次性腳本)