为什么不能增加连接超时?

D T*_*D T 1 php postgresql pdo

这是我的设定:

$DBH = new PDO(
        "pgsql:host=$host;dbname=$dbname", 
        $username, 
        $password,
        array(
            PDO::ATTR_TIMEOUT => 60,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        )
    );
Run Code Online (Sandbox Code Playgroud)

这是20多岁后的时间.但如果我设定 PDO::ATTR_TIMEOUT => 5,它会在5秒后超时.

为什么不能增加连接超时?我使用xampp 3.2.2,数据库Postgresql 9.2我在本地测试,不存在反病毒.

Nar*_*arf 9

PDO::ATTR_TIMEOUT并且default_socket_timeoutINI设置是您可以从PHP更改的唯一值,但TCP连接可能会受到许多因素的影响.

在客户端,防火墙或操作系统本身也可能应用超时限制.
在传输过程中,任何中间对等体(您的路由器,ISP)也可以根据各种规则丢弃连接.

但最重要的(即更可能在你的情况下),连接涉及两方和PostgreSQL服务器也有自己的超时设置- ,,tcp_keepalives_idle 和.tcp_keepalives_intervaltcp_keepalives_countauthentication_timeout

参考:https://www.postgresql.org/docs/current/static/runtime-config-connection.html

究竟是什么影响你是不可能猜到的,你可能需要改变多个设置.检查上面的每一个,你可以.