sql >> データベース >  >> RDS >> Mysql

ユーザーの中止時にMySQLクエリを強制終了します

    興味のある方のために、私が使用したものは次のとおりです。

    <?php
    // Connection to query on
    $query_con = mysqli_connect($host, $user, $password, $name, $port);
    
    // Connection to kill on
    $kill_con = mysqli_connect($host, $user, $password, $name, $port);
    
    // Start the query
    $query_con->query($slow_query, MYSQLI_ASYNC);
    
    // Get the PID
    $thread_id = $query_con->thread_id;
    
    // Ignore user abort so we can kill the query
    ignore_user_abort(true);
    
    do  {
        // Poll MySQL
        $links = $errors = $reject = array($mysqli->mysqli);
        $poll = mysqli_poll($links, $errors, $reject, 0, 500000);
    
        // Check if the connection is aborted and the query was killed
        if (connection_aborted() && mysqli_kill($kill_con, $thread_id)) {
            die();
        }
    } while (!$poll);
    
    // Not aborted, so do stuff with the result
    $result = $link->reap_async_query();
    if (is_object($result)) {
        // Select
        while ($row = $result->fetch_object()) {
            var_dump($row);
        }
    } else {
        // Insert/update/delete
        var_dump($result);
    }
    


    1. MySQLデータベースのタイムゾーンをGMTに設定します

    2. 公式のMicrosoftAccessTechブログがオンラインになりました!

    3. 複数のUNIQUEフィールドに対するONDUPLICATEKEYUPDATEのMySQLの動作

    4. mysqlパスワードPHPを使用したMySQLへの接続