2011-12-23 52 views
0

我構建了一個應用程序(MySQL/PHP),它(及時)可以使用到遠程(也許是慢速)MySQL服務器的連接。該應用程序使用AJAX whispering經常打開數據庫連接。我做了一些客戶端優化,但從來沒有足夠的勇氣使用持久連接,這在這裏可能是個好主意。在AJAX調用中使用mysql_pconnect時還要記住什麼?

我很擔心閒置的mysql連接可能超過服務器限制,導致需要重新啓動服務器。所以我打算使用mysql.connection_timeout至15秒,這會在限制之後終止每個空閒的持續連接?還是會阻塞系統資源,直到服務器進程結束?

我不會在低語中使用交易,並且在連接關閉後應該釋放每個鎖,對吧?

我應該知道是否還有其他持續性連接問題? (我已經閱讀了the documentation。)

回答

2

通常不會通過與MySQL建立持久連接來獲取任何內容。它的連接協議通常已經相當快。當你使用常規的非持久連接時,你所做的就是保證「乾淨」的操作環境。

如果任何腳本在事務中途因任何原因而死亡或者離開服務器端變量設置,則持續連接意味着半連接事務仍然處於活動狀態,此時某些其他事件再次獲取連接腳本。

發生這種情況時,您很容易陷入僵局。新的腳本不知道它有舊的/髒的連接,並且MySQL看不到原來的連接腳本已經消失並進行自己的清理,所以最終會產生一個垃圾散佈的環境。這就是說,你可以通過mysql.max_persistent這個設置來限制PHP代表你保持打開多少個連接。無論您試圖通過腳本創建多少個連接,PHP都不會超過該限制,因此您可以將其設置爲低於MySQL自己的max_connections設置。

相關問題