RT php想找合適的串連池,pdo支援嗎
回複內容:
RT php想找合適的串連池,pdo支援嗎
PHP不支援,PHP串連資料庫是非常快的(比其他語言的資料庫連接方式快很多),一般用直連就行了;pdo支援串連池。
不支援
有一個選項可以讓你開啟持久串連,然而你會發現到時候伺服器串連大量沒釋放所以不推薦使用,你感興趣可以試試
$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', array( PDO::ATTR_PERSISTENT => true));
程式使用持久串連(PDO::ATTR_PERSISTENT)訪問資料庫,則一個PHP-FPM背景工作處理序對應一個到MySQL的長串連.
請求結束後,PHP不會釋放到MySQL的串連,以便下次重用,這個過程對程式是透明的.
這可以看作是PHP-FPM維護的"資料庫連接池".
假如你的伺服器有12個核心(超執行緒),你開啟24個PHP-FPM背景工作處理序.需要注意的是,PHP-FPM的進程數pm.max_children不要多於MySQL的最大串連數max_connections(預設151).
'127.0.0.1', 'db_username' => 'root', 'db_password' => '', 'db_name' => 'mybase', 'db_port' => 3306, 'db_pconnect' => true);$dsn = "mysql:dbname=$app[db_name];host=$app[db_host];port=$app[db_port];charset=utf8";$db = new PDO($dsn, $app['db_username'], $app['db_password'], array( PDO::ATTR_PERSISTENT => $app['db_pconnect'], PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
串連池得用mysql代理
可以使用swoole
擴充來實現。
具體參考: 基於swoole擴充實現真正的PHP資料庫連接池
PDO加上ODBC就可以了