2017-03-15 4 views
0

Wir testen eine PHP-Verbindung zu einer MySQL-DB mit der folgenden Syntax:PHP - MySQL-Verbindung Timeout-Zeit

<?php 
$link = mysqli_connect("10.0.0.6:3306", "wordpress-user", "Passw0rd", "wordpress"); 

if (!$link) { 
    echo "Error: Unable to connect to MySQL." . PHP_EOL; 
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; 
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; 
    exit; 
} 

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL; 
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL; 

mysqli_close($link); 
?> 

Das Problem ist auf dem Erfolg, dass die Antwort sofort ist jedoch bei einem Fehler der Antwort ist immer 22 Sekunden. Wäre es möglich, die 22 Sekunden auf eine schnellere Reaktion bei Verbindungsausfall zu reduzieren?

Wir haben die mysql.connect_timeout bereits auf 5 Sekunden reduziert, dies hatte jedoch keine Auswirkungen, da die Zeitüberschreitung/Antwortzeit immer noch 21 Sekunden betrug. Irgendwelche Ideen bitte?

Der PHP-Server wird auf IIS gehostet.

Vielen Dank im Voraus.

+0

Können Sie es ohne die mysql Portnummer versuchen? – Jer

+0

@ C0dekid kein Effekt. Hatte es versucht. Danke aber :) – joebegborg07

+0

Wenn Sie eine Verbindung zum lokalen Server herstellen, verwenden Sie einfach '127.0.0.1' oder' localhost'. Wenn Sie eine Verbindung mit einem Remote-Server herstellen, kann dies ein DNS-Problem sein. – Jer

Antwort

0

Es gibt Verbindungsoption, MYSQLI_OPT_CONNECT_TIMEOUT:

$my = mysqli_init(); 
$my->options(MYSQLI_OPT_CONNECT_TIMEOUT, 1); 
$my->real_connect('non-existent-ip',"wordpress-user", "Passw0rd", "wordpress"); 

wird es 1 machen zweite Timeout

+0

Danke, das funktioniert, aber ich bin auf der Suche nach Serverebene und nicht auf PHP-Skript-Ebene zu implementieren. Irgendwelche Ideen ? – joebegborg07

0

Wenn Sie den Zugriff auf die Server-Dateien haben, können Sie my.cnf (MySQL-Konfigurationsdatei) bearbeiten, und ändern Sie die Linien wait_timeout = 28800 und interactive_timeout = 28800 zu den gewünschten Werten.

Andernfalls müssten Sie es aus dem Skript selbst tun.

Auch check this link, kann es Ihnen helfen.

+0

Danke für Ihre Antwort. Ich habe Zugriff auf meine.ini/my.cnf Datei, aber ich versuche, dies von einer PHP-Server-Seite und nicht von MYSQL-Server-Seite zu erreichen. Wenn der MYSQL-Server ausgefallen ist, möchte ich, dass der PHP-Server/das Skript die Timeout-Antwort umgehend zurückgibt. Irgendwelche Ideen bitte? – joebegborg07

+0

[Aktivieren Sie diese] (http://php.net/manual/en/function.set-time-limit.php). Lesen Sie auch die [Hinweise] (http://php.net/manual/en/function.set-time-limit.php#refsect1-function.set-time-limit-notes) – Condorcho

0

Versuchen Sie, persistente MySQL-Verbindung zu verwenden, wenn Sie Ihren Code von PHP-FPM ausführen. Dies half uns mit spontanen mysqli: real_connect Timeouts.