我计划使用MYSQL。是否有可用的连接池扩展?或连接的正常实践是什么? 这是到处都使用的那个吗...
mysqli_connect("localhost", "xxx", "xxx", "test");
人们是使用普通的mysql_connect
还是pconnect
..? pconnect
有多好,我应该为PConnect做什么设置?
我计划使用MYSQL。是否有可用的连接池扩展?或连接的正常实践是什么? 这是到处都使用的那个吗...
mysqli_connect("localhost", "xxx", "xxx", "test");
人们是使用普通的mysql_connect
还是pconnect
..? pconnect
有多好,我应该为PConnect做什么设置?
mysql_pconnect()
吗?mysql_pconnect()
与 mysql_connect()
很相似,但有两个主要区别。mysql_close()
不会关闭由 mysql_pconnect()
建立的链接)。sample code:
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name');
编辑:抱歉重复了,没有看到其他答案。
请使用mysqli或PDO扩展代替旧的mysql扩展。
如果您在主机名前加上“p:”,则可以告诉mysqli_connect或mysqli::__construct使用持久连接。
有3个连接函数:
mysql_connect:普通连接,没有池化,您无法执行存储过程(只能执行SQL)
mysql_pconnect:池化连接,您无法执行存储过程(只能执行SQL)
mysqli_connect:普通连接,没有池化,您可以执行存储过程(需要mysql 5或更高版本)
mysqli_pconnect:不存在。没有内置的连接函数既处理存储过程又进行池化
我的建议(通过经验和冲浪):
如果您需要存储过程,请省略池化并使用mysqli_connect
如果您不需要存储过程,请使用mysql_pconnect
在PHP中绝对可以使用连接池 - 但是您应该使用swoole或openswoole扩展,这些扩展带来了许多异步/并行化功能:
https://openswoole.com/docs/get-started/installation
之后,您可以使用普通的mysqli或pdo PHP扩展来设置连接池。
请参阅以下示例:
https://github.com/open-smf/connection-pool
https://openswoole.com/docs/modules/connection-pool
一些框架已经为您处理了这个问题:
https://hyperf.wiki/2.2/#/en/pool
编辑:我使用smf连接池与mezzio微框架和openswoole,对于mysql和redis非常稳定。