Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O PDO do PHP está ignorando a opção ATTR_TIMEOUT para MySQL quando o servidor não pode ser alcançado


Apenas coloque
ini_set("default_socket_timeout", 2);

antes de sua string de conexão PDO().

(Testado no Windows, também deve funcionar bem no Linux.)

Por quê?

Perseguindo isso através do manual:

O driver mysqlnd usa sockets para a conexão subjacente, e para definir os tempos limite você precisa usar as funções de tempo limite do socket (stream). (Ref:http://php.net/manual/en/mysqlnd.notes. php )

Se você quiser mais controle, poderá controlar mais especificamente o soquete real:não testei isso, pois é apenas unix. Para definir o soquete que o mysqlnd usa, você pode especificar o soquete usando as configurações ini (Ref:http://php.net/manual/en/ref.pdo-mysql.connection.php )

Veja http://php. net/manual/en/ref.pdo-mysql.php#ini.pdo-mysql.default-socket sobre essa configuração

Você pode definir o tempo limite usando http://php .net/manual/en/function.stream-set-timeout.php

Mas provavelmente é mais fácil definir o padrão e redefinir quando terminar ...