Signatur
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
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!";
}
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);
}
// 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.