Signatur
Beschreibung
cubrid_ping() testet, ob eine bestehende CUBRID-Serververbindung noch funktionsfähig ist. Dies ist nützlich in langlaufenden Skripten oder nach langen Pausen zwischen Datenbankoperationen, bei denen der Server die Verbindung möglicherweise getrennt hat (z. B. durch einen Timeout).
Die Funktion sendet einen einfachen Ping an den CUBRID-Server. Erhält sie eine Antwort, gibt sie true zurück. Falls die Verbindung unterbrochen wurde, versucht sie automatisch, die Verbindung wiederherzustellen. Ist auch das nicht möglich, gibt sie false zurück.
Besonders in persistenten Verbindungsszenarien oder in Daemon-Prozessen sollte vor dem Ausführen von Abfragen zunächst cubrid_ping() aufgerufen werden, um sicherzustellen, dass die Verbindung tatsächlich verfügbar ist.
Wird kein Verbindungsbezeichner ($conn_identifier) übergeben, wird die zuletzt geöffnete CUBRID-Verbindung verwendet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier | resource | Die CUBRID-Verbindungsressource, die mit cubrid_connect() oder cubrid_connect_with_url() erstellt wurde. Wird dieser Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
true zurück, wenn die Verbindung zum CUBRID-Server erfolgreich geprüft oder wiederhergestellt wurde. Gibt false zurück, wenn die Verbindung nicht mehr besteht und auch nicht wiederhergestellt werden konnte.Beispiele
Grundlegende Verbindungsprüfung vor einer Abfrage
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen.');
}
// Simulierte Pause (z. B. in einem langlaufenden Skript)
sleep(5);
// Verbindung prüfen, bevor eine Abfrage ausgeführt wird
if (cubrid_ping($conn)) {
echo "Verbindung ist aktiv." . PHP_EOL;
$result = cubrid_execute($conn, 'SELECT * FROM nation LIMIT 5');
// Ergebnis verarbeiten ...
cubrid_close_request($result);
} else {
echo "Verbindung unterbrochen – bitte neu verbinden." . PHP_EOL;
}
cubrid_disconnect($conn);
?>
Wiederverbindungslogik mit cubrid_ping in einem Daemon
<?php
function get_active_connection(string $host, int $port, string $db, string $user, string $pw): resource|false {
static $conn = null;
if ($conn === null || !cubrid_ping($conn)) {
// Verbindung neu herstellen
if ($conn !== null) {
@cubrid_disconnect($conn);
}
$conn = cubrid_connect($host, $port, $db, $user, $pw);
if (!$conn) {
error_log('CUBRID-Verbindung konnte nicht hergestellt werden.');
return false;
}
echo "Neue Verbindung hergestellt." . PHP_EOL;
} else {
echo "Bestehende Verbindung wiederverwendet." . PHP_EOL;
}
return $conn;
}
$conn = get_active_connection('localhost', 33000, 'demodb', 'dba', '');
if ($conn) {
// Datenbankoperationen ausführen
$result = cubrid_execute($conn, 'SELECT count(*) FROM nation');
$row = cubrid_fetch($result);
echo "Anzahl Nationen: " . $row[0] . PHP_EOL;
cubrid_close_request($result);
cubrid_disconnect($conn);
}
?>
// Wichtig · Fallstricke
Hinweis zur Verfügbarkeit: cubrid_ping() ist nur verfügbar, wenn die CUBRID-PHP-Erweiterung installiert und aktiviert ist. Diese ist standardmäßig nicht in PHP enthalten und muss separat über PECL oder den CUBRID-Treiber installiert werden.
Persistente Verbindungen: Bei Verwendung von cubrid_pconnect() ist es besonders ratsam, cubrid_ping() zu verwenden, da persistente Verbindungen vom Server getrennt werden können, ohne dass der Client dies unmittelbar bemerkt.
Fehlerbehandlung: Selbst wenn cubrid_ping() true zurückgibt, können nachfolgende Abfragen fehlschlagen. Die Rückgabe ist daher als Indikator, nicht als absolute Garantie zu verstehen.