Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Das PDO von PHP ignoriert die Option ATTR_TIMEOUT für MySQL, wenn der Server nicht erreichbar ist

Geben Sie einfach

ein
ini_set("default_socket_timeout", 2);

vor Ihrer PDO()-Verbindungszeichenfolge.

(Unter Windows getestet, sollte auch unter Linux funktionieren.)

Warum?

Dies durch das Handbuch jagen:

Der mysqlnd-Treiber verwendet Sockets für die zugrunde liegende Verbindung, und um Timeouts festzulegen, müssen Sie die Socket- (Stream-) Timeout-Funktionen verwenden. (Siehe:http://php.net/manual/en/mysqlnd.notes. php )

Wenn Sie mehr Kontrolle wünschen, können Sie möglicherweise den eigentlichen Socket genauer steuern:Ich habe dies nicht getestet, da es nur Unix ist. Um den von mysqlnd verwendeten Socket festzulegen, können Sie den Socket mithilfe von INI-Einstellungen angeben (Ref:http://php.net/manual/en/ref.pdo-mysql.connection.php )

Siehe http://php. net/manual/en/ref.pdo-mysql.php#ini.pdo-mysql.default-socket über diese Einstellung

Möglicherweise können Sie dann das Timeout mit http://php einstellen .net/manual/en/function.stream-set-timeout.php

Aber wahrscheinlich ist es einfacher, den Standardwert festzulegen und dann zurückzusetzen, wenn Sie fertig sind ...