mysqli_query 報 mysql 連接斷開的處理方法
在使用 php 腳本連接 mysql 服務器時,可能會遇到 mysqli_query(): send of xx bytes failed with errno=32 broken pipe 的錯誤。其中,xx 代表發送的字節數。盡管嘗試增大 max_allowed_packet 參數,但問題仍然存在。
錯誤原因
此錯誤通常表明 php 腳本與 mysql 服務器之間的連接在一段時間不活動后被服務器關閉。當腳本嘗試通過這個已關閉的連接執行查詢時,就會觸發錯誤。
解決方法
立即學習“PHP免費學習筆記(深入)”;
為了解決此問題,可以采取以下步驟:
- 調整 mysql 服務器的 wait_timeout 參數:此參數指定非交互式連接在不活動后被關閉所需的時間。將其設置為較大值,如:
set wait_timeout = 3600;
登錄后復制
- 檢查連接是否斷開:在執行查詢之前,檢查連接是否仍然活動,并重新連接已關閉的連接:
if (!mysqli_ping($conn)) { // 斷開連接 mysqli_close($conn); // 重新連接 $conn = mysqli_connect($host, $user, $password, $database); }
登錄后復制
通過進行這些調整,可以防止 broken pipe 錯誤的發生,確保 php 腳本與 mysql 服務器之間的穩定連接。