Start · Sprachen · PHP · Referenz · mysql_thread_id

mysql_thread_id

Funktion

Gibt die Thread-ID der aktuellen MySQL-Verbindung zurück, die zur Identifikation oder zum Abbrechen eines Threads verwendet werden kann.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_thread_id(resource $link_identifier = null): int|false

Beschreibung

mysql_thread_id() liefert die interne Thread-ID der aktuellen MySQL-Datenbankverbindung. Diese ID ist eindeutig für die jeweilige Verbindungssitzung und kann beispielsweise mit dem SQL-Befehl KILL dazu genutzt werden, einen hängenden oder unerwünschten Datenbankthread von einer anderen Verbindung aus zu beenden.

Die Funktion eignet sich in Szenarien, bei denen lang laufende Abfragen überwacht oder im Fehlerfall abgebrochen werden müssen. Die zurückgegebene Thread-ID bezieht sich immer auf die aktive Verbindung zum Zeitpunkt des Aufrufs.

Achtung: Die gesamte mysql_*-Erweiterung ist seit PHP 5.5.0 als deprecated markiert und wurde in PHP 7.0.0 vollständig entfernt. Für neue Projekte sollte stattdessen mysqli_thread_id() oder die PDO-Erweiterung verwendet werden.

Parameter

Name Typ Default Beschreibung
$link_identifier resource null Eine MySQL-Verbindungsressource, die mit mysql_connect() erzeugt wurde. Wird kein Wert übergeben, wird die zuletzt geöffnete Verbindung verwendet.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Thread-ID der aktuellen Verbindung als int zurück. Im Fehlerfall (z. B. keine aktive Verbindung) wird false zurückgegeben.

Beispiele

Thread-ID einer MySQL-Verbindung ausgeben

<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
if (!$link) {
    die('Verbindung fehlgeschlagen: ' . mysql_error());
}

$thread_id = mysql_thread_id($link);
echo 'Aktuelle Thread-ID: ' . $thread_id;

mysql_close($link);
?>
Aktuelle Thread-ID: 42

Einen laufenden Thread mit KILL abbrechen

<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
if (!$link) {
    die('Verbindung fehlgeschlagen: ' . mysql_error());
}

$thread_id = mysql_thread_id($link);

// Thread von einer anderen Verbindung aus beenden (nur zur Demonstration)
$admin_link = mysql_connect('localhost', 'admin', 'adminpass', true);
if ($admin_link) {
    $kill_query = 'KILL ' . intval($thread_id);
    mysql_query($kill_query, $admin_link);
    echo 'Thread ' . $thread_id . ' wurde abgebrochen.';
    mysql_close($admin_link);
}

mysql_close($link);
?>
Thread 42 wurde abgebrochen.

// Wichtig · Fallstricke

Deprecation-Hinweis: Die mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet markiert, in PHP 7.0.0 vollständig entfernt und steht in PHP 7+ nicht mehr zur Verfügung. Verwende stattdessen mysqli_thread_id() oder eine äquivalente PDO-Lösung.

Die Thread-ID ist nicht dauerhaft stabil: Bei einem Reconnect (z. B. durch mysql_ping()) kann sich die Thread-ID ändern. Speichere sie daher nur für den unmittelbaren Gebrauch.

Das Ausführen von KILL auf einem Thread erfordert in der Regel entsprechende Datenbankberechtigungen.