mysqli::$thread_id

mysqli_thread_id

(PHP 5, PHP 7, PHP 8)

mysqli::$thread_id -- mysqli_thread_id返回當前連接的線程 ID

說明

面向?qū)ο箫L格

過程化風格

mysqli_thread_id(mysqli $link): int

mysqli_thread_id() 函數(shù)返回當前連接的線程 ID, 這個線程 ID 可以在 mysqli_kill() 函數(shù)中使用。 如果 PHP 到數(shù)據(jù)庫的連接中斷了, 然后使用 mysqli_ping() 函數(shù)重新建立連接的話, 新的連接的線程 ID 會發(fā)生改變。所以,僅在需要的時候,調(diào)用本函數(shù)獲取連接的線程 ID。

注意:

線程 ID 是每次連接都重新分配的,也就是說它和連接是緊密相關(guān)的, 如果某個連接異常斷開了,然后重新建立了到數(shù)據(jù)庫的連接, 這個線程 ID 就不再是原來的那個了,它會發(fā)生變化。

可以通過執(zhí)行 SQL 語句:KILL QUERY processid 來殺掉對應連接上正在執(zhí)行的 SQL 語句。

參數(shù)

mysql

僅以過程化樣式:由mysqli_connect()mysqli_init() 返回的 mysqli 對象。

返回值

返回當前連接的線程 ID

范例

示例 #1 $mysqli->thread_id 例程

面向?qū)ο箫L格

<?php
$mysqli 
= new mysqli("localhost""my_user""my_password""world");

/* 檢查連接是否成功 */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

/* 獲取連接的線程 ID */
$thread_id $mysqli->thread_id;

/* 殺掉這個連接 */
$mysqli->kill($thread_id);

/* 這句代碼應該會報錯 */
if (!$mysqli->query("CREATE TABLE myCity LIKE City")) {
    
printf("Error: %s\n"$mysqli->error);
    exit;
}

/* 關(guān)閉連接 */
$mysqli->close();
?>

過程化風格

<?php
$link 
mysqli_connect("localhost""my_user""my_password""world");

/* 檢查連接是否成功 */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

/* 獲取連接的線程 ID */
$thread_id mysqli_thread_id($link);

/* 殺掉這個連接 */
mysqli_kill($link$thread_id);

/* 這句代碼應該會報錯 */
if (!mysqli_query($link"CREATE TABLE myCity LIKE City")) {
    
printf("Error: %s\n"mysqli_error($link));
    exit;
}

/* close connection */
mysqli_close($link);
?>

以上例程會輸出:

Error: MySQL server has gone away

參見