2014-11-02 345 views
3

我運行一個無盡的PHP腳本PDO永久連接是這樣的:PHP保持一個PDO ATTR_PERSISTENT連接活着

$conn=new PDO(
    'mysql:host=127.0.0.1','user','pass', array(PDO::ATTR_PERSISTENT => true) 
); 

MySQL的wait_timeout變量設置爲28800和我離開的腳本上空閒的時間12小時測試目的;並且連接自動斷開,所以我推測PDO::ATTR_PERSISTENT屬性被系統變量wait_timeout取代。

所以我想知道,只要PHP腳本正在運行,是否有設置或其他PHP方法來保持連接呼吸,以及這是否是一種好的做法。

我的計劃B將每60分鐘執行一次無資源mySQL查詢來重置時鐘。

OS:4GB內存VPS Debian的64位SSD

回答

3

我建議你另一種方式來處理這種情況。無論何時您需要在您的長時間腳本中運行查詢,確保存在連接。否則重新連接。

try { 
     echo "Testing connection...\n"; 
     $old_errlevel = error_reporting(0); 
     self::$pdo->query("SELECT 1"); 
    } catch (PDOException $e) { 
     echo "Connection failed, reinitializing...\n"; 
     self::init(); 
    } 

你可以找到full class example here。 我還建議您在知道長時間不使用它時明確關閉腳本中的連接。