Start · Sprachen · PHP · Referenz · mysqli_thread_safe

mysqli_thread_safe

Funktion

Gibt zurück, ob die MySQLi-Bibliothek thread-sicher kompiliert wurde.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_thread_safe(): bool

Beschreibung

mysqli_thread_safe() prüft, ob die zugrunde liegende MySQL-Client-Bibliothek (libmysql oder mysqlnd) mit Thread-Sicherheit kompiliert wurde. Die Funktion erfordert keine aktive Datenbankverbindung und kann jederzeit aufgerufen werden.

Thread-Sicherheit ist relevant, wenn PHP in einer Multithread-Umgebung betrieben wird, etwa als Apache-Modul mit dem Worker- oder Event-MPM. In solchen Szenarien teilen sich mehrere Threads denselben Prozess-Speicherbereich, und eine nicht thread-sicher kompilierte MySQL-Bibliothek kann zu Race Conditions und Datenverfälschungen führen.

In modernen PHP-Installationen mit mysqlnd (MySQL Native Driver) ist Thread-Sicherheit in der Regel standardmäßig gegeben. Bei Verwendung der externen libmysqlclient hängt die Thread-Sicherheit von der Kompilierungskonfiguration der Bibliothek ab.

Diese Funktion eignet sich für Diagnose- und Konfigurationsprüfungen, beispielsweise in Installations-Checks oder Umgebungsvalidierungen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die MySQL-Client-Bibliothek thread-sicher kompiliert wurde, andernfalls false.

Beispiele

Einfache Thread-Sicherheitsprüfung

<?php
if (mysqli_thread_safe()) {
    echo "Die MySQLi-Bibliothek ist thread-sicher.";
} else {
    echo "Warnung: Die MySQLi-Bibliothek ist NICHT thread-sicher!";
}
Die MySQLi-Bibliothek ist thread-sicher.

Einsatz in einem Umgebungs-Diagnose-Skript

<?php
$info = [
    'mysqli_thread_safe' => mysqli_thread_safe() ? 'Ja' : 'Nein',
    'mysqli_version'     => mysqli_get_client_info(),
];

foreach ($info as $key => $value) {
    printf("%-25s: %s\n", $key, $value);
}
mysqli_thread_safe : Ja mysqli_version : mysqlnd 8.1.0

// Wichtig · Fallstricke

Hinweis: Bei Verwendung von mysqlnd (Standard seit PHP 5.4) ist Thread-Sicherheit praktisch immer gegeben. Das explizite Prüfen ist vor allem dann sinnvoll, wenn externe MySQL-Bibliotheken (libmysqlclient) eingesetzt werden oder wenn ein portables Anwendungs-Setup auf verschiedenen Serverumgebungen validiert werden soll.

In Single-Thread-Umgebungen (z. B. PHP-FPM, CLI) ist Thread-Sicherheit irrelevant für den Betrieb, schadet aber auch nicht.