mysqli 持久连接
Posted
技术标签:
【中文标题】mysqli 持久连接【英文标题】:mysqli persistent connection 【发布时间】:2011-03-29 14:47:27 【问题描述】:简而言之,对于高使用率的php
和mysql
服务器是否有某种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 持久连接的主要内容,如果未能解决你的问题,请参考以下文章