首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 持久連線函數 pconnect() 詳解與 MySQL 應用實例

     編輯:PHP 相關知識

PHP 中的 mysql_pconnect() 函數介紹

mysql_pconnect() 是 PHP 提供的持久資料庫連線函數,與普通的 mysql_connect() 不同,它建立的連線在腳本執行結束後不會關閉,而是保留在連線池中供下次請求重複使用。這對於高頻訪問 MySQL 的 Web 應用能顯著降低連線開銷,提升效能。

語法與參數

resource mysql_pconnect(
    string $server = 'localhost:3306',
    string $username = '',
    string $password = '',
    int $client_flags = 0
)
  • server:MySQL 伺服器位址,可包含埠號(如 192.168.1.10:3306)或 Unix socket 路徑。
  • username、password:資料庫帳號密碼。
  • client_flags:客戶端旗標(如 MYSQL_CLIENT_SSL、MYSQL_CLIENT_COMPRESS)。

運作原理

首次呼叫時,PHP 會嘗試從持久連線池尋找相同參數(主機、帳號、密碼)的空閒連線;若存在則直接回傳,否則建立新連線並放入池中。腳本結束時連線不會被 mysql_close() 關閉,而是標記為可重用。

優缺點權衡

優點缺點
減少 TCP 三向交握與認證開銷連線數易達到 MySQL max_connections 上限
高併發下回應更快長連線可能導致「MySQL server has gone away」錯誤
程式碼修改極小(將 connect 改為 pconnect)不支援事務回滾等需連線狀態重置的操作

最佳實踐建議

  1. 搭配 mysql_ping() 在重用前檢測連線存活。
  2. 設定 MySQL wait_timeout 避免閒置連線佔用資源。
  3. 考慮改用 PDO 或 MySQLi 的持久連線(PDO::ATTR_PERSISTENT),功能更完整。
  4. 僅在讀多寫少、連線建立成本高的場景啟用。

簡易範例

<?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,並開啟持久連線選項。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved