我在php里用 mysql_query 执行依据select语句,该语句执行时间很长, 如果中途我想要终止掉他, 请问应该怎么写? 查文档看到有 kill 函数,但不知道怎么能获得那次查询的id。。

解决方案 »

  1.   

    MYSQL HELP:
    $result = $db->query("SHOW FULL PROCESSLIST");
     while ($row=mysql_fetch_array($result)) {
        $process_id=$row["Id"];
        if ($row["User"] != "root" ) {
            print("KILLED:  " . $process_id);
            $sql="KILL $process_id";
            mysql_query($sql);
      

  2.   

    谢谢,我是楼主,
    show full processlist 得到所有的连接,我怎么知道应该终止哪个, 如果一个User可以同时有几个连接,只是想把某个myswl_query终止掉
      

  3.   

    $result = $db->query("SHOW FULL PROCESSLIST");
    while ($row=mysql_fetch_array($result)) {
        $process_id=$row["Id"]; 
    得到数组,循环,自己测试一下就知道了
      

  4.   

    你可以用
    SELECT * FROM information_schema.`PROCESSLIST` P
    where user = 'username'
    and host='hostname'
    and db='myddb'
    and command='Query'
    and state='executing'
    and info='select ... your sql statement'来得到你的那个coonect id,然后kill掉即可。
      

  5.   

    我是楼主,
    我是发送的2次请求到php,第一次是执行mysql_query, 第二次是 kill, 第二次时候怎么得到第一次时候的id呢
    SHOW FULL PROCESSLIST 我能得到这个数组,怎么得到第一次的id呢, 能不能用某些函数在第一次时候获得 query线程的id,写到文件, 然后第二次用这个id去kill