2009-09-29 51 views
-2
$con = mysql_connect("localhost:".$LOCAL_DB_PORT, $LOCAL_DB_USER, $LOCAL_DB_PASS); 
mysql_select_db("hr", $con); 
mysql_query("set names utf8", $con); 

while(true) 
{ 
    do_stuff($con); 
    sleep(50); 
} 

如果在50秒內連接超時,$ con仍然可以工作嗎?將PHP自動連接到MySQL?

+2

你已經有了測試它的代碼,爲什麼不運行它並嘗試它是否工作? – NDM 2009-09-29 14:51:27

+0

你需要考慮連接池... – 2009-09-29 15:00:59

回答

2

如果連接超時,它將無法工作。

要從評論回答這個問題,要解決該問題,請參閱php.net手冊頁mysql_connect()它說:

如果第二個呼叫對mysql_connect()使用相同的參數,不會建立新鏈接,而是返回已打開鏈接的鏈接標識符。

所以如果你想確保你總是有一個開放的連接,只要在你用sleep()替換的代碼完成執行後嘗試用相同的參數打開一個新的連接。

+0

那麼如何應對呢? – Mask 2009-09-29 14:52:44

0

簡單的答案:你爲什麼不嘗試看看?

我相信codeburger是正確的:如果MySQL連接超時,那麼它就消失了。您可以使用mysql_pconnect的持續連接。每次睡眠後都需要調用該函數,但它將使用現有連接,節省開銷。

+0

你甚至不需要使用持久連接。隨後調用具有相同參數的mysql_connect()將在PHP腳本的相同執行中使用先前的連接。所以如果mysql斷開連接,你會得到一個新的連接。如果你沒有斷開連接,沒有任何反應。 – longneck 2009-09-29 15:17:18

+0

的確如此,但是我的觀點是用'mysql_pconnect'連接每次使用的開銷較少。 – DisgruntledGoat 2009-09-29 16:41:42