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é...