Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le PDO de PHP ignore l'option ATTR_TIMEOUT pour MySQL lorsque le serveur est inaccessible

Il suffit de mettre

ini_set("default_socket_timeout", 2);

avant votre chaîne de connexion PDO().

(Testé sous Windows, devrait également convenir sous Linux.)

Pourquoi ?

Poursuivre cela dans le manuel :

Le pilote mysqlnd utilise des sockets pour la connexion sous-jacente, et pour définir des délais d'attente, vous devez utiliser les fonctions de délai d'attente de socket (stream). (Réf :http://php.net/manual/en/mysqlnd.notes. php )

Si vous voulez plus de contrôle, vous pourrez peut-être contrôler plus spécifiquement le socket réel:je n'ai pas testé cela car il s'agit uniquement d'unix. Pour définir le socket utilisé par mysqlnd, vous pouvez spécifier le socket à l'aide des paramètres ini (Ref :http://php.net/manual/en/ref.pdo-mysql.connection.php )

Voir http://php. net/manual/fr/ref.pdo-mysql.php#ini.pdo-mysql.default-socket à propos de ce paramètre

Vous pourrez alors définir le délai d'expiration en utilisant http://php .net/manual/en/function.stream-set-timeout.php

Mais il est probablement plus facile de définir la valeur par défaut, puis de la réinitialiser une fois que vous avez terminé...