php连接池mysql

php连接池mysql,php,mysql,connection,connection-pooling,Php,Mysql,Connection,Connection Pooling,我计划使用MYSQL。是否有可用的连接池扩展?或者连接的正常做法是什么? 这是每个地方都用的吗 mysqli_connect("localhost", "xxx", "xxx", "test"); 人们是否只使用普通的mysql\u-connect或pconnect。。?pconnect有多好?我应该为pconnect做什么设置?您是否使用过mysql\u pconnect()? mysql\u pconnect()的行为与mysql\u connect()非常相似,有两个主要区别 首先,在连

我计划使用MYSQL。是否有可用的连接池扩展?或者连接的正常做法是什么? 这是每个地方都用的吗

mysqli_connect("localhost", "xxx", "xxx", "test");

人们是否只使用普通的
mysql\u-connect
pconnect
。。?
pconnect
有多好?我应该为pconnect做什么设置?

您是否使用过
mysql\u pconnect()
mysql\u pconnect()
的行为与
mysql\u connect()
非常相似,有两个主要区别

首先,在连接时,函数将首先尝试查找已使用相同主机、用户名和密码打开的(持久)链接。如果找到一个,将返回它的标识符,而不是打开新连接

其次,当脚本执行结束时,与SQL server的连接不会关闭。相反,该链接将保持打开状态以供将来使用(
mysql\u close()
不会关闭由
mysql\u pconnect()
建立的链接)

因此,这种类型的链接称为“持久链接”


检查它

有3种连接功能:

mysql\u connect:正常连接,无池,无法执行存储过程(仅sql)

mysql\u pconnect:池连接,您无法执行存储过程(仅sql)

mysqli\u connect:正常连接,无池,可以执行存储过程(需要mysql 5或更高版本)

mysqli\u pconnect:不存在。没有处理存储过程和池的内置连接函数

我的建议(通过体验和冲浪):

如果需要存储过程,请省略池并使用mysqli\u connect


如果您不需要存储过程,使用MySqLppLink

不完全是一个答案,但我认为您也可以考虑PHP数据对象(PDO)。


对于MySQL的PDO这是一个老问题,但我想加上我的两分钱,因为我在看同一个问题。从PHP5.3开始,mysqli支持持久连接,您只需要在主机名前面加上p:

如果您正在运行Apache,您是否尝试过通过Apache mod_dbd模块研究mysql的连接池?它支持MySQL的连接池

持久连接支持不可用 在PHP5.3中为mysqli引入 分机。支持已经存在 在PDO-MYSQL和ext/MYSQL中。想法 持久连接的背后是 客户端进程之间的连接 一个数据库可以被一个 客户端进程,而不是 多次创建和销毁。 这减少了创建的开销 每次有新的联系 必需,因为未使用的连接是必需的 缓存并准备好重用

与mysql扩展不同,mysqli 不提供单独的功能 用于打开持久连接到 必须打开一个持久连接 在以下情况下,将p前置到主机名 正在连接。

资料来源:


编辑:很抱歉重复,没有看到其他答案。

使用mysqli或PDO扩展,而不是旧的mysql扩展

如果在主机名前面加上“p:”,则可以告诉
mysqli\u connect
mysqli::\u construct
使用持久连接


感谢您注意到持久连接的主机前缀“p:”需要PHP 5.3版。没有在其他地方找到那块小金块。
sample code:
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name');