2010-11-07 83 views
2

我開發了一個應用程序,它可以批量發送大量電子郵件給不同的用戶。我在這個應用程序中遇到的最常見的問題是mysql連接超時的問題。如果在以前打開的連接中沒有執行任何查詢並且連接長時間保持空閒狀態的批處理之間,mysql本身會關閉連接。發送當前批處理後,當我再次嘗試執行任何SQL查詢時,它會給我mysql連接錯誤。原則中的Mysql連接超時

現在我正在使用mysql_ping($ conn)函數來檢查連接ID是否超時。如果連接超時,我使用mysql_connect()函數重新連接。現在我正在轉向教條而不是原生的PHP功能。 Doctorine中是否還有recconnect()函數?

回答

0

從未影響我的批處理動作面臨這個問題,但我想你大概可以做這樣的事情在你的代碼,你認爲有風險的連接將超時那些地方:

// Fetch current connection 
$conn = Doctrine_Manager::connection(); 
if(!$conn) { 
    // Open a new connection 
    $conn = Doctrine_Manager::connection('mysql://username:[email protected]/whatever', 'connection 1'); 
} 

http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/connections.html

+0

嗨,湯姆,恐怕你的解決方案是不會工作的,因爲在教條中沒有辦法在連接超時時使連接的值爲空。 – 2010-11-09 11:14:11

+0

@Tejaswi ...我明白了。在這種情況下,我沒有足夠的經驗來推薦替代方案。 – Tom 2010-11-09 18:33:19