Heim  >  Artikel  >  Backend-Entwicklung  >  php pdo支持连接池吗

php pdo支持连接池吗

WBOY
WBOYOriginal
2016-06-06 20:25:142098Durchsuche

RT php想找合适的连接池,pdo支持吗

回复内容:

RT php想找合适的连接池,pdo支持吗

PHP不支持,PHP连接数据库是非常快的(比其他语言的数据库连接方式快很多),一般用直连就行了;pdo支持连接池。

  1. 不支持

  2. 有一个选项可以让你开启持久连接,然而你会发现到时候服务器连接大量没释放所以不推荐使用,你感兴趣可以试试

<code class="php">$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', array( PDO::ATTR_PERSISTENT => true));</code>

php pdo支持连接池吗
程序使用持久连接(PDO::ATTR_PERSISTENT)访问数据库,则一个PHP-FPM工作进程对应一个到MySQL的长连接.
请求结束后,PHP不会释放到MySQL的连接,以便下次重用,这个过程对程序是透明的.
这可以看作是PHP-FPM维护的"数据库连接池".
假如你的服务器有12个核心(超线程),你开启24个PHP-FPM工作进程.需要注意的是,PHP-FPM的进程数pm.max_children不要多于MySQL的最大连接数max_connections(默认151).

<code><?php $app = array(
    'db_host'        => '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'
));</code>

连接池得用mysql代理

可以使用swoole扩展来实现。

具体参考: 基于swoole扩展实现真正的PHP数据库连接池

PDO加上ODBC就可以了

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn