2010-07-16 125 views
3

我有一個長時間運行的php腳本,它基本上是一個監聽事件(它是一個xmpp bot)的無限循環,我用nohup php bot.php &開始腳本。檢查mysql連接是否有效

腳本的原始結構是這樣

$mysqli = mysqli_connect(...); 

while(1) { 
    if(event1) { 
     // do database action 
    } else if(event2) { 
     // non database action 
     echo "something"; 
    } 
} 

當我運行該腳本,一切工作正常開始。當我幾個小時後回來時,如果我發出event2但是發出事件1時發生數據庫相關錯誤(PHP致命錯誤:調用在線非對象上的成員函數bind_param()n)

如何保持mysql連接有效,或者有辦法檢查mysqli連接是否有效,這樣我就可以重新連接了嗎?

回答

5
+3

謝謝,mysqli_ping工作。我想補充一點,我必須在我的php.ini中添加mysqli.reconnect = On,以便在關閉時自動重新建立連接。 (注意:ini_set在這種情況下不起作用!!) – Gunjan 2010-07-20 08:06:13

+0

@Gunjan非常感謝您的評論 - 它幫助我解決了我的問題。我添加的php.ini指令是'mysqli.reconnect =「1」',並且不需要在代碼中添加'$ mysqli-ping()'。 – user1477388 2014-06-15 10:51:08