php - 如果出现错误,pg_connect 会非常慢

标签 php postgresql

我有一个 php 脚本,用于在 postgresql 数据库中存储一些信息。在此脚本中,我使用一个函数来存储有关某些数据库操作的一些日志。在测试过程中,我发现我的脚本只会在 4-5 秒后记录与 pg_connect 函数相关的错误 - 这对我来说是一个大问题。

您可以在下面找到我的测试和结果:

情况 1 - pg_connect 函数中没有错误:

    Log("START DBCONN - without errors");

    $dbconn = pg_connect("host=$host dbname=$dbname user=$dbuser password=$dbpassword");

        if(!$dbconn){
           Log("ERROR: Could not connect to database");
        }

    Log("END");

情况 2 - pg_connect 中出现错误:

    Log("START DBCONN - with errors");

    $dbconn = pg_connect("host=$host12 dbname=$dbname user=$dbuser password=$dbpassword");

        if(!$dbconn){
           Log("ERROR: Could not connect to database");
        }

    Log("END");

结果

情况 1:

[12-Jan-2016 09:31:21] START DBCONN - without errors

[12-Jan-2016 09:31:21] END

情况 2:

[12-Jan-2016 09:31:59] START DBCONN - with errors

[12-Jan-2016 09:32:03] ERROR: Could not connect to database

[12-Jan-2016 09:32:03] END

你知道这个问题的解决方案吗?因为,我还没有找到一个:(

感谢您的帮助!

最佳答案

根据错误的性质,可能有不同的原因:

  • 如果用户名或密码错误,服务器可能会延迟否定响应,从而使暴力破解有效组合变得更加麻烦。
  • 如果主机无法访问,tcp 连接超时可能会是几秒钟。

这两个问题都很难以干净的方式解决。

还有一些不应导致延迟的错误情况,例如:

  • 如果主机可访问,但数据库服务器未运行(即“连接被拒绝”)。

关于php - 如果出现错误,pg_connect 会非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34741715/

相关文章:

php - 为什么我不能在docker容器中运行phpinfo()?

java - 如何在 sql INSERT 期间自动生成 ID?

php - 如何使用 MySQL 将数组插入到 php 数据库中?

c# - 解密由 pgcrypto 加密的数据(在 C# 中)

javascript - 如何计算给定时间超过 24 小时的时间百分比 hh :mm:ss?

javascript - 删除 Squarespace 中标签之间的逗号

ruby-on-rails - Rails 迁移 -- rake db :status says migration is down, 但数据库已经迁移?

c++ - 选择 PostgreSQL 的列数

php - 从目录结构创建数组

php - 在 PHP 中使用 href 标签传递复选框值