PHP MySQL连接持久性

前端之家收集整理的这篇文章主要介绍了PHP MySQL连接持久性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经阅读了很多关于 PHPMysqL之间的持久数据库连接(MysqL_connect与MysqL_pconnect).与PDO和MysqLi相同.这肯定只是我对这个缺乏了解,但是如何在网页之间保持数据库连接?在这段代码中:
$conn = MysqL_pconnect( $server,$user,$pass );
MysqL_select_db( $dbname );

如果两个用户同时加载此页面,使用两个不同的$dbname变量,那么PHP只与数据库建立一个连接还是两个?我相当肯定

$conn = MysqL_connect( $server,$pass );

会有两个联系.

如果pconnect重用第一个用户打开的连接,MysqL_select_db调用是否适用于第二个用户

理想情况下,我正在寻找的是一种减少数据库连接但仍能在每个PHP脚本中设置默认数据库方法.我有客户都使用相同的PHP脚本,但数据存储在他们自己的客户端数据库中(因此,$dbname总是不同,但MysqL连接参数是相同的 – 相同的MysqL IP地址,用户和密码).

希望有道理.我们可以使用MysqL,MysqLi或PDO,只需要知道如何以最好的方式实现这一点,而不会让客户意外地将数据写入别人的数据库!提前致谢.

从我阅读文档和评论,我看到:

MysqL_pconnect上的文档(不建议使用的方法)

Second,the connection to the sql server will not be closed when the execution of the script ends. Instead,the link will remain open for future use ( MysqL_close() will not close links established by MysqL_pconnect()).

并对该页面发表评论

Persistent connections work well for CGI PHP managed by fastCGI,contrary to the suggestion above that they only work for the module version. That’s because fastCGI keeps PHP processes running between requests. Persistent connections in this mode are easily made immune to connection limits too,because you can set PHP_FCGI_CHILDREN << MysqL’s max_connections <<< Apache’s MaxClients. This also saves resources.

关于MysqLi_connect的文档(新方法)

Prepending host by p: opens a persistent connection. MysqLi_change_user() is automatically called on connections opened from the connection pool.

MysqLi_change_user的文档:

Changes the user of the specified database connection and sets the current database.

所以我的理解如下:pconnect在脚本结束后保持连接打开但是进程(或者可能是进程组)仍处于活动状态(例如在设置了FCGI的服务器中).一次只有一个脚本使用连接,当新脚本获取该连接时,将更新用户数据库.

因此,如果使用FCGI和持久连接,则可以减少打开的数据库连接数,但同时运行的脚本将不会共享同一连接.关于选择哪个数据库,连接没有问题.

猜你在找的PHP相关文章