gpt4 book ai didi

php - 带有 PGSQL_CONNECT_FORCE_NEW 标志的 pg_connect

转载 作者:行者123 更新时间:2023-11-29 14:01:41 24 4
gpt4 key购买 nike

我继承了一个用 PHP 编写的 Web 应用程序,它使用 PostgresSQL 作为数据库服务器。我对 PHP 和 PostgresSQL 没有任何经验,我来自 Java/C# 背景。我正在研究它是如何工作的,在分析它时,我注意到老程序员在每次页面请求期间都会实例化一个名为 Database 的类,他在该类中使用如下方式打开与数据库的连接:

$this->connection = pg_connect($qs, PGSQL_CONNECT_FORCE_NEW)

探查器告诉我这是一个非常昂贵的调用(页面在 2.7 秒内加载...),我想知道是否以及何时实际需要标志 PGSQL_CONNECT_FORCE_NEW。由于连接字符串始终相同,因此我尝试改用 pg_pconnect(或者甚至没有该标志的 pg_connect)并且页面加载仅用了 741 毫秒。现在一切似乎都很好,但我有点担心这可能会在某个地方破坏应用程序,而且由于我没有使用 PHP 的经验,我想知道使用这些标志的做法在某种程度上是否有意义我需要检查的场景。显然,没有可依赖的单元测试。作为旁注,您是否知道有关此 pg_(p)connect 真正工作原理的良好资源?官方文档似乎不够深入。

谢谢!

最佳答案

警告:pg_pconnect 将在每个 Apache 后端的生命周期内维护一个连接,所以如果您最终拥有大量连接,请不要感到惊讶。如果它们最终都同时发出查询,那将阻塞数据库服务器。

不过,我从未听说过连接数据库需要 2 秒。我可以启动 psql、连接、发出查询并在 0.2 秒内获得响应,这在我的旧上网本上。检查您的网络设置或类似设置 - 这里发生了一些奇怪的事情。

关于php - 带有 PGSQL_CONNECT_FORCE_NEW 标志的 pg_connect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12173015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com