Mysql
 sql >> Database >  >> RDS >> Mysql

Il PDO di PHP sta ignorando l'opzione ATTR_TIMEOUT per MySQL quando il server non può essere raggiunto

Metti

ini_set("default_socket_timeout", 2);

prima della stringa di connessione PDO().

(Testato su Windows, dovrebbe andare bene anche su Linux.)

Perché?

Inseguendo questo attraverso il manuale:

Il driver mysqlnd utilizza i socket per la connessione sottostante e per impostare i timeout è necessario utilizzare le funzioni di timeout del socket (stream). (Rif.:http://php.net/manual/en/mysqlnd.notes. php )

Se desideri un maggiore controllo, potresti essere in grado di controllare in modo più specifico il socket effettivo:non l'ho testato poiché è solo unix. Per impostare il socket utilizzato da mysqlnd, puoi specificare il socket utilizzando le impostazioni ini (Rif:http://php.net/manual/en/ref.pdo-mysql.connection.php )

Vedi http://php. net/manual/en/ref.pdo-mysql.php#ini.pdo-mysql.default-socket su quell'impostazione

Potresti quindi essere in grado di impostare il timeout utilizzando http://php .net/manual/en/function.stream-set-timeout.php

Ma probabilmente è più facile impostare le impostazioni predefinite e quindi ripristinare una volta terminato...