5
我一直從我的代碼得到以下錯誤:PDO連接在API超時,PHP-FPM重啓解決它
連接數據庫失敗:PDO :: __結構():12個字節的發送失敗,錯誤號= 110連接超時
此錯誤持續發生在api上。如果這個API在白天不斷被調用,這種情況不會發生。只有在api未被使用一段時間的情況下。
我可以通過執行php-fpm restart/reload解決此問題,但這不應該是解決方案。
有沒有人有任何想法如何解決這個問題?
- 編輯 -
這是用於連接到數據庫的代碼:
public function connectDatabase($allow_persistent = true)
{
$this->db = null;
$this->readINI();
$pdo_attr = [
PDO::ATTR_PERSISTENT => $allow_persistent,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8;",
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true,
];
$this->db = new PDO("mysql:host=" . $this->db_data_dbhost . ";dbname=" . $this->db_data_dbname . ";charset=utf8", $this->db_data_username, $this->db_data_password, $pdo_attr);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
要itterate更多一些,這是在兩個API的此刻使用。
- 一個是一貫使用的客戶,從來沒有遇到這個問題
- 二是不使用的很多客戶還沒有看到,因爲這是仍處於發展的,它只是有一些客戶進行測試。我們確實嘗試將應用程序推送到appstore,但它被這個問題擊倒。如上所述,該API最終會遇到錯誤,如果不重新啓動/重新加載php-fpm服務,將無法從此狀態中恢復。
你使用持續連接嗎? – Federkun
@Federkun我添加了連接到數據庫的代碼,所以如果你按照代碼 – Wouter
只是不要,http://php.net/manual/en/features.persistent-connections.php – Federkun