sql >> Base de Datos >  >> RDS >> Mysql

El PDO de PHP ignora la opción ATTR_TIMEOUT para MySQL cuando no se puede acceder al servidor

Solo pon

ini_set("default_socket_timeout", 2);

antes de su cadena de conexión PDO().

(Probado en Windows, también debería funcionar bien en Linux).

¿Por qué?

Persiguiendo esto a través del manual:

El controlador mysqlnd usa sockets para la conexión subyacente, y para establecer tiempos de espera, debe usar las funciones de tiempo de espera de socket (flujo). (Ref:http://php.net/manual/en/mysqlnd.notes. php )

Si desea más control, entonces podría controlar más específicamente el zócalo real:no lo he probado ya que es solo para Unix. Para configurar el socket que usa mysqlnd, puede especificar el socket usando la configuración ini (Ref:http://php.net/manual/en/ref.pdo-mysql.connection.php )

Consulte http://php. net/manual/en/ref.pdo-mysql.php#ini.pdo-mysql.socket-predeterminado sobre esa configuración

Es posible que luego pueda configurar el tiempo de espera usando http://php .net/manual/en/function.stream-set-timeout.php

Pero probablemente sea más fácil establecer el valor predeterminado y luego restablecer una vez que haya terminado...