如果用户关闭浏览器或从一个页面导航到其他页面,则使用PHP KILL MySQL查询

时间:2014-01-10 12:15:46

标签: php mysql performance mysqli

我的网站正在使用onload AJAX。所以当用户进入页面时,8个AJAX调用是并行执行的。在流程的中间,如果用户关闭浏览器或导航到另一个页面,我想要终止查询。

实现这一目标的步骤:

1。找到下一个MySQL查询执行ID(连接标识符)并将其存储到会话中。

http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html

我们需要在执行READ(select)查询之前识别此ID。因为PHP会逐行执行。

问题

How do we identify the next connection identifier?

OR

How do we reserve the connection identifier and execute the query on specified identifier?

2 即可。在数据库中执行查询。

3. 如果识别出用户已中止,则终止执行MySQL查询。我们可以使用connection_aborted()/ ignore_user_abort()函数在PHP中检测用户中止状态。

使用以下命令终止此查询执行:

KILL ID

2 个答案:

答案 0 :(得分:3)

第1步:获取MySql连接的线程ID

    $thread_id = mysqli_thread_id($link);

第2步:使用ignore_user_abort();在代码中

步骤3:检查连接是否已关闭。如果是,则按如下方式终止该线程:

        if (connection_aborted() && mysqli_kill($connection_link, $thread_id)) {
           die();
        }

检查已接受的this question解决方案。

答案 1 :(得分:1)

以下查询还返回当前连接标识符

SELECT CONNECTION_ID();

收到此连接标识符后,我们可以对此标识符执行查询。