2013-02-21 27 views
2

我已經遷移到PHP 5.4.11,它的工作原理除了它會在長時間維護腳本中導致「MySQL服務器已經消失」的錯誤。 PHP 5.3.17沒有這樣做。爲什麼MYSQL服務器在PHP 5.4.11下「消失」,但不在5.3.17下?

我需要添加/刪除php.ini或my.cnf指令嗎?我是否需要更新我的查詢PHP類腳本(我們使用mysqli擴展名)?

+0

我有它也在5.3。它主要取決於您的連接到期時間:my.cnf – Sebas 2013-02-21 19:16:29

+0

我*不*在5.3.X中有它,但在5.4.X中有它。我有PHP 5.3.X上的服務器連接到與PHP 5.4.X上的服務器連接的同一臺MySQL服務器,所以我寧願不要弄亂my.cnf。 – Tom 2013-02-21 19:24:09

+0

我沒有php.ini現在檢查,但也許你應該看看在那裏是否有任何數據庫相關的值,它只需要那 – Sebas 2013-02-21 19:25:34

回答

5

您應該檢查下的MySQL Reference Manual。它列出了可能發生這種情況的很多可能的原因。它在頁面上提到:

MySQL服務器最常見的原因已消失錯誤是 服務器超時並關閉連接。

由於您正在運行較長的維護腳本,我懷疑這是原因。從頁面還有一點:

默認情況下,如果 什麼也沒有發生,服務器關閉8小時後的連接。您可以通過在啓動mysqld時設置 wait_timeout變量來更改時間限制。請參見第5.1.4節, 「服務器系統變量」。

你可以嘗試設置mysqli.reconnect爲1(在php.ini),或從options增加MYSQLI_OPT_CONNECT_TIMEOUT。請參閱mysqli config。您還應該查看migrating from 5.3 to 5.4筆記。沒有查看代碼很難確定問題。

1

connect_timeout不是問題,我不得不改變我的查詢類,並添加以下內容:

mysqli_options(MYSQLI_INIT_COMMAND,"SET SESSION wait_timeout=600;");

相關問題