Почему нельзя увеличить время ожидания подключения?

Это моя настройка:

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

Это время после 20 с.
Но если я установлю PDO::ATTR_TIMEOUT => 5, Это будет время ожидания после 5 с.

Почему нельзя увеличить время ожидания подключения?
Я использовал xampp 3.2.2, База данных Postgresql 9.2
Я тестирую на локальном, не существует Антивирус.

1

Решение

PDO::ATTR_TIMEOUT и default_socket_timeout Настройки INI — это единственные значения, которые вы можете изменить в PHP, но на TCP-соединение может влиять множество факторов.

На стороне клиента брандмауэр или сама ОС также могут применять ограничения по времени ожидания.
При передаче любой из промежуточных узлов (ваш маршрутизатор, интернет-провайдеры) может также разорвать соединения на основе различных правил.

Но самое главное (то есть, скорее всего, в вашем случае), соединение включает две стороны, и сервер PostgreSQL также имеет свои собственные настройки времени ожидания — tcp_keepalives_idle, tcp_keepalives_interval, tcp_keepalives_count а также authentication_timeout,

Ссылка: https://www.postgresql.org/docs/current/static/runtime-config-connection.html

Невозможно угадать, что именно влияет на вас, и вам, возможно, придется изменить более одного параметра. Проверьте для каждого из вышеперечисленного, что вы можете.

9

Другие решения

выполнять PDO::errorInfo после блока, если вы хотите узнать, почему его таймаут

http://php.net/manual/de/pdo.errorinfo.php

и время ожидания может быть с другой стороны, почему сценарий должен ждать 60 секунд, когда время ожидания ответа db через 20 секунд.

3

использование ini_set("default_socket_timeout", 60); перед подключением

1

Просто положи

ini_set("default_socket_timeout", 50);
before your PDO() connect string.
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector