Signatur
Beschreibung
mysqli_ping() prüft, ob die Verbindung zum MySQL-Server noch aktiv ist. Ist die Verbindung zwischenzeitlich unterbrochen worden (z. B. durch einen Timeout), versucht die Funktion automatisch, die Verbindung neu aufzubauen. Bei Erfolg gibt sie true zurück, andernfalls false.
Die Funktion ist besonders nützlich in langlaufenden Skripten oder Daemon-Prozessen, in denen zwischen zwei Datenbankabfragen ein längerer Zeitraum vergehen kann, nach dem der MySQL-Server die Verbindung wegen Inaktivität getrennt haben könnte (wait_timeout). Ein einfaches Ping stellt sicher, dass die nachfolgenden Abfragen nicht auf einer toten Verbindung fehlschlagen.
In der objektorientierten Schreibweise lautet der Aufruf $mysqli->ping(). Die Funktion arbeitet sowohl mit persistenten als auch mit normalen Verbindungen.
Hinweis: Ab PHP 8.4 ist mysqli_ping() als veraltet markiert (deprecated). Für neue Projekte sollte stattdessen eine robuste Verbindungsverwaltung mit Fehlerbehandlung und ggf. erneuter Verbindung via mysqli_connect() implementiert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $mysql Pflicht | mysqli | Ein von mysqli_connect() oder mysqli_init() zurückgegebenes mysqli-Verbindungsobjekt. |
Rückgabewert
true zurück, wenn die Verbindung aktiv ist oder erfolgreich neu aufgebaut werden konnte. Gibt false zurück, wenn der Ping fehlschlug und keine Verbindung hergestellt werden konnte.Beispiele
Verbindung in einer Schleife mit Ping prüfen
<?php
$mysqli = mysqli_connect('localhost', 'benutzer', 'passwort', 'testdb');
if (!$mysqli) {
die('Verbindung fehlgeschlagen: ' . mysqli_connect_error());
}
// Simuliert eine langlaufende Verarbeitung
for ($i = 0; $i < 5; $i++) {
// Prüfen ob Verbindung noch aktiv ist
if (!mysqli_ping($mysqli)) {
echo "Verbindung unterbrochen, konnte nicht wiederhergestellt werden.\n";
break;
}
echo "Ping #{$i} erfolgreich – Verbindung ist aktiv.\n";
// ... hier folgen Datenbankabfragen ...
sleep(1);
}
mysqli_close($mysqli);
Objektorientierte Verwendung von ping()
<?php
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'testdb');
if ($mysqli->connect_errno) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
if ($mysqli->ping()) {
echo "Datenbankverbindung ist aktiv und bereit.\n";
} else {
echo "Datenbankverbindung ist nicht erreichbar: " . $mysqli->error . "\n";
}
$mysqli->close();
// Wichtig · Fallstricke
Deprecation ab PHP 8.4: mysqli_ping() wurde in PHP 8.4 als veraltet markiert und wird in einer zukünftigen PHP-Version entfernt. Für neue Projekte empfiehlt sich eine explizite Fehlerbehandlung bei Datenbankabfragen und ein erneuter Verbindungsaufbau bei Bedarf.
Der automatische Wiederverbindungsversuch (reconnect) ist standardmäßig deaktiviert. Er kann über mysqli_options($mysqli, MYSQLI_OPT_RECONNECT, true) aktiviert werden, was jedoch nicht in allen Umgebungen unterstützt wird und zu unerwarteten Zustandsproblemen (z. B. verlust von Transaktions-Kontext) führen kann.
In hoch frequentierten Webanwendungen sollte mysqli_ping() nicht pauschal vor jeder Abfrage aufgerufen werden, da dies einen zusätzlichen Round-Trip zum Server erzeugt. Besser ist es, Fehler beim eigentlichen Query-Aufruf abzufangen und dann gezielt zu reagieren.