mysqli 持久连接

Posted

技术标签:

【中文标题】mysqli 持久连接【英文标题】:mysqli persistent connection 【发布时间】:2011-03-29 14:47:27 【问题描述】:

简而言之,对于高使用率的phpmysql 服务器是否有某种mysqli_pconnect,或者我是否需要坚持使用mysql 未改进?如果是这样,他们为什么要删除它?

【问题讨论】:

【参考方案1】:

在 PHP 5.3 中引入了对此的支持。对于在此之前的版本,PDO 和 - 上帝保佑 - mysql 扩展是唯一的选择。

引用manual:

与 mysql 扩展不同,mysqli 不提供单独的函数来打开持久连接。要打开持久连接,您必须在连接时将 p: 添加到主机名。

【讨论】:

【参考方案2】:

我不关心 MySQL 中的持久连接。持久连接适用于 Oracle 等数据库,其中建立新连接的速度要慢得多。

在 MySQL 中,建立连接相对较快(尤其是在您关闭反向 DNS 查找的情况下)。应该不需要与 MySQL 的持久连接。如果您的应用对性能至关重要,那么您可以做很多事情,而不是担心持久连接。

此外,持久连接会带来意想不到的副作用。如果您使用 MySQL 变量、临时表、更改连接的字符集或忘记完成事务,则可能会导致问题。例如,您可以将一个用户的私有数据暴露给另一个用户的 PHP 会话,因为您让一个临时表处于活动状态。

【讨论】:

阅读我链接到的手册页。每个 PHP 请求之后都有清理操作。但是,是的,大多数时候使用持久连接并不值得。【参考方案3】:

其实mysqli库有persistent support。只需在主机名前加上“p:”即可。

【讨论】:

如何在主机名前添加“p:”?例如:$this->mysqli = new mysqli(mysql_host,mysql_user,mysql_password,mysql_database); @JavaNewb:很抱歉复活了一个旧线程,但我们留下了一个未回答的问题!我用字符串连接“添加 p:”。示例:$this->mysqli = new mysqli('p:'.mysql_host, mysql_user, mysql_password, mysql_database);

以上是关于mysqli 持久连接的主要内容,如果未能解决你的问题,请参考以下文章

mysqli 持久连接

php使用mysqli连接Mysql,怎么使用永久连接

面试题:每发送一个http请求就要建立一个tcp连接吗(非持久连接/持久连接)

PHP 连接数据库啥情况下才会用到持久链接 mysql

LVS 持久连接

LVS 持久连接