mysql_pconnect() 是 PHP 提供的持久資料庫連線函數,與普通的 mysql_connect() 不同,它建立的連線在腳本執行結束後不會關閉,而是保留在連線池中供下次請求重複使用。這對於高頻訪問 MySQL 的 Web 應用能顯著降低連線開銷,提升效能。
resource mysql_pconnect(
string $server = 'localhost:3306',
string $username = '',
string $password = '',
int $client_flags = 0
)
192.168.1.10:3306)或 Unix socket 路徑。MYSQL_CLIENT_SSL、MYSQL_CLIENT_COMPRESS)。首次呼叫時,PHP 會嘗試從持久連線池尋找相同參數(主機、帳號、密碼)的空閒連線;若存在則直接回傳,否則建立新連線並放入池中。腳本結束時連線不會被 mysql_close() 關閉,而是標記為可重用。
| 優點 | 缺點 |
|---|---|
| 減少 TCP 三向交握與認證開銷 | 連線數易達到 MySQL max_connections 上限 |
| 高併發下回應更快 | 長連線可能導致「MySQL server has gone away」錯誤 |
| 程式碼修改極小(將 connect 改為 pconnect) | 不支援事務回滾等需連線狀態重置的操作 |
mysql_ping() 在重用前檢測連線存活。wait_timeout 避免閒置連線佔用資源。PDO::ATTR_PERSISTENT),功能更完整。<?php
$link = mysql_pconnect('localhost', 'db_user', 'db_pass')
or die('持久連線失敗: ' . mysql_error());
mysql_select_db('my_database', $link);
$result = mysql_query('SELECT * FROM users', $link);
// ... 處理結果 ...
// 無需 mysql_close($link);
?>
提示: PHP 7.0 起已移除 mysql_* 擴展,新專案請改用 PDO 或 MySQLi,並開啟持久連線選項。