Start · Sprachen · PHP · Referenz · cubrid_set_db_parameter

cubrid_set_db_parameter

Funktion

Setzt einen CUBRID-Datenbankparameter für die angegebene Verbindung.

seit PHP 8.4.0 Kategorie: db

Signatur

cubrid_set_db_parameter(resource $conn_identifier, int $param_type, int $value): bool

Beschreibung

cubrid_set_db_parameter() erlaubt es, bestimmte Datenbankparameter einer aktiven CUBRID-Verbindung zur Laufzeit zu ändern. Dies ist nützlich, um das Verhalten der Datenbankverbindung gezielt zu steuern, beispielsweise den Isolationsgrad von Transaktionen oder das Timeout-Verhalten.

Der zu setzende Parameter wird über den Integer-Wert $param_type angegeben. Folgende Konstanten stehen dafür zur Verfügung: CUBRID_PARAM_ISOLATION_LEVEL zum Festlegen des Transaktions-Isolationslevels und CUBRID_PARAM_LOCK_TIMEOUT zum Festlegen des Lock-Timeouts in Millisekunden.

Die Funktion ist besonders in Szenarien mit nebenläufigen Datenbankzugriffen relevant, wo präzise Steuerung von Sperren und Transaktionsisolation erforderlich ist, um Race Conditions oder Deadlocks zu vermeiden. Sie sollte direkt nach dem Aufbau der Verbindung aufgerufen werden, bevor Transaktionen gestartet werden.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Die CUBRID-Verbindungsressource, die zuvor mit cubrid_connect() oder cubrid_connect_with_url() geöffnet wurde.
$param_type Pflicht int Der zu ändernde Parameter. Gültige Werte sind CUBRID_PARAM_ISOLATION_LEVEL und CUBRID_PARAM_LOCK_TIMEOUT.
$value Pflicht int Der neue Wert des Parameters. Für CUBRID_PARAM_ISOLATION_LEVEL ein Wert von 1 bis 6; für CUBRID_PARAM_LOCK_TIMEOUT ein Timeout-Wert in Millisekunden (oder -1 für unbegrenzt).

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Parameter erfolgreich gesetzt wurde, oder false im Fehlerfall, z. B. bei ungültigem Parametertyp oder ungültigem Wert.

Beispiele

Transaktions-Isolationslevel setzen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if (!$conn) {
    die('Verbindungsfehler: ' . cubrid_error());
}

// Isolationslevel auf 4 (REPEATABLE READ) setzen
$result = cubrid_set_db_parameter($conn, CUBRID_PARAM_ISOLATION_LEVEL, 4);

if ($result) {
    echo "Isolationslevel erfolgreich gesetzt.\n";
} else {
    echo "Fehler beim Setzen des Isolationslevels.\n";
}

cubrid_disconnect($conn);
?>
Isolationslevel erfolgreich gesetzt.

Lock-Timeout festlegen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if (!$conn) {
    die('Verbindungsfehler: ' . cubrid_error());
}

// Lock-Timeout auf 5000 Millisekunden (5 Sekunden) setzen
$result = cubrid_set_db_parameter($conn, CUBRID_PARAM_LOCK_TIMEOUT, 5000);

if ($result) {
    echo "Lock-Timeout erfolgreich auf 5 Sekunden gesetzt.\n";

    // Aktuellen Wert zur Kontrolle auslesen
    $params = cubrid_get_db_parameter($conn);
    echo "Aktueller Lock-Timeout: " . $params['LOCK_TIMEOUT'] . " ms\n";
} else {
    echo "Fehler beim Setzen des Lock-Timeouts.\n";
}

cubrid_disconnect($conn);
?>
Lock-Timeout erfolgreich auf 5 Sekunden gesetzt. Aktueller Lock-Timeout: 5000 ms

// Wichtig · Fallstricke

Hinweis: Die Funktion gilt nur für die Verbindungsressource, auf der sie aufgerufen wird, und hat keine Auswirkungen auf andere aktive Verbindungen. Parameteränderungen gelten sofort und wirken auf alle nachfolgenden Transaktionen dieser Verbindung.

Ungültige Werte für $param_type oder Werte außerhalb des gültigen Bereichs für $value führen dazu, dass die Funktion false zurückgibt. Zur Überprüfung der aktuellen Datenbankparameter kann cubrid_get_db_parameter() verwendet werden.