PDO的持久化连接是指在哪个层面的持久化?

发布于 2022-09-05 21:41:20 字数 139 浏览 16 评论 0

1.PDO开启持久化后是一个指在每个脚本执行的生命期内持久化吗?脚本执行结束了,是不是连接就释放了?
2.是不是fastcgi模式下PDO持久化的数据库连接是由php-fpm维持的。那么是不是连接到数据库的线程数就和php-fpm的worker进程数相同的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

本王不退位尔等都是臣 2022-09-12 21:41:20

php.net 的官方Documentation:

很多 web 应用程序通过使用到数据库服务的持久连接获得好处。持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用。持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。

我的理解是:

  1. 官方所说的脚本结束,在fpm模式下就是指一次请求的结束另一个使用相同凭证的脚本也就可以对应成另一个使用相同数据库连接凭证的请求
  2. 所以,对于楼主的问题1,pdo开启的持久化并不是在脚本执行结束释放连接,它的生命周期应该是依赖于fpm进程的。对于问题2,因为client端的请求被分配到的fpm worker进程的不确定性,要保证这一次请求所创建的持久化连接能被应用到下一次请求,所以每个worker进程都会缓存一个pdo连接。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文