mysqli持久连接

16

简而言之,对于高使用率的PHPMySQL服务器,是否有某种类似于mysqli_pconnect的东西,或者我需要坚持使用未改进的mysql?如果有,请问为什么把它移除了?

3个回答

23

这项功能在 PHP 5.3 中引入。在此之前的版本中,PDO 和 - 天哪 - mysql 扩展是唯一的选择。

引用手册的说法:

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


18

我不在MySQL中使用持久连接。 持久连接适用于像Oracle这样的数据库,在其中建立新连接要慢得多。

在MySQL中,建立连接相对较快(特别是如果关闭反向DNS查找)。 MySQL不需要持久连接。 如果您的应用程序对性能至关重要,有很多事情可以做,比担心持久连接更值得投入精力。

此外,持久连接会带来意想不到的副作用。 如果使用MySQL变量、临时表、更改连接的字符集或忘记完成事务,可能会引起问题。 例如,您可能会因为保留了一个临时表而将一个用户的私人数据暴露给另一个用户的PHP会话。


1
阅读我链接的手册页面。每个PHP请求后都有清理操作。但是,是的,大多数情况下使用持久连接并不值得。 - Artefacto

8
实际上,mysqli库支持持久连接。只需在主机名前加上“p:”即可完成。 (参考文献)

如何在主机名前添加“p:”?例如:$this->mysqli = new mysqli(mysql_host,mysql_user,mysql_password,mysql_database); - Anthony Raimondo
8
@JavaNewb:抱歉再次提起这个旧帖子,但我们留下了一个未回答的问题!我使用字符串连接在mysql_host前加上"p:"。例如:$this->mysqli = new mysqli('p:'. mysql_host, mysql_user, mysql_password, mysql_database); - Steve Almond
@SteveAlmond你的评论对答案有什么补充吗?他已经说了在主机名前加上“p:”,而且答案也没有被编辑过。 - Jake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接