Php/docs/mysqli.thread-id

来自菜鸟教程
跳转至:导航、​搜索

mysqli::$thread_id

mysqli_thread_id

(PHP 5, PHP 7)

mysqli::$thread_id -- mysqli_thread_id返回当前连接的线程 ID


说明

面向对象风格

int $mysqli->thread_id;

过程化风格

mysqli_thread_id ( mysqli $link ) : int

mysqli_thread_id() 函数返回当前连接的线程 ID, 这个线程 ID 可以在 mysqli_kill() 函数中使用。 如果 PHP 到数据库的连接中断了, 然后使用 mysqli_ping() 函数重新建立连接的话, 新的连接的线程 ID 会发生改变。所以,仅在需要的时候,调用本函数获取连接的线程 ID。

Note:

线程 ID 是每次连接都重新分配的,也就是说它和连接是紧密相关的, 如果某个连接异常断开了,然后重新建立了到数据库的连接, 这个线程 ID 就不再是原来的那个了,它会发生变化。

可以通过执行 SQL 语句:KILL QUERY processid 来杀掉对应连接上正在执行的 SQL 语句。

参数

link
仅以过程化样式:由mysqli_connect()mysqli_init() 返回的链接标识。


返回值

返回当前连接的线程 ID


范例

Example #1 $mysqli->thread_id 例程

面向对象风格


<?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;}/* 关闭连接 */$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

参见