(PHP 5, PHP 7, PHP 8)
mysqli::$thread_id -- mysqli_thread_id — 返回當前連接的線(xiàn)程 ID
面向對象風(fēng)格
過(guò)程化風(fēng)格
mysqli_thread_id() 函數返回當前連接的線(xiàn)程 ID, 這個(gè)線(xiàn)程 ID 可以在 mysqli_kill() 函數中使用。 如果 PHP 到數據庫的連接中斷了, 然后使用 mysqli_ping() 函數重新建立連接的話(huà), 新的連接的線(xiàn)程 ID 會(huì )發(fā)生改變。所以,僅在需要的時(shí)候,調用本函數獲取連接的線(xiàn)程 ID。
注意:
線(xiàn)程 ID 是每次連接都重新分配的,也就是說(shuō)它和連接是緊密相關(guān)的, 如果某個(gè)連接異常斷開(kāi)了,然后重新建立了到數據庫的連接, 這個(gè)線(xiàn)程 ID 就不再是原來(lái)的那個(gè)了,它會(huì )發(fā)生變化。
可以通過(guò)執行 SQL 語(yǔ)句:
KILL QUERY processid
來(lái)殺掉對應連接上正在執行的 SQL 語(yǔ)句。
返回當前連接的線(xiàn)程 ID
示例 #1 $mysqli->thread_id 例程
面向對象風(fēng)格
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* 檢查連接是否成功 */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* 獲取連接的線(xiàn)程 ID */
$thread_id = $mysqli->thread_id;
/* 殺掉這個(gè)連接 */
$mysqli->kill($thread_id);
/* 這句代碼應該會(huì )報錯 */
if (!$mysqli->query("CREATE TABLE myCity LIKE City")) {
printf("Error: %s\n", $mysqli->error);
exit;
}
/* 關(guān)閉連接 */
$mysqli->close();
?>
過(guò)程化風(fēng)格
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* 檢查連接是否成功 */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* 獲取連接的線(xiàn)程 ID */
$thread_id = mysqli_thread_id($link);
/* 殺掉這個(gè)連接 */
mysqli_kill($link, $thread_id);
/* 這句代碼應該會(huì )報錯 */
if (!mysqli_query($link, "CREATE TABLE myCity LIKE City")) {
printf("Error: %s\n", mysqli_error($link));
exit;
}
/* close connection */
mysqli_close($link);
?>
以上例程會(huì )輸出:
Error: MySQL server has gone away