1

実行に時間がかかる PHP スクリプトがあり、その進行状況をユーザーに警告したいと考えています。Cookie を使用してこれを実装するのに問題があります。私が今持っているコードは次のとおりです。

jQuery:

$(document).on('click', '#pop_db', function() {
    $.post(
        "pop_db.php",
        function(data) {
            var response = jQuery.parseJSON(data);
            if(response.code == "success") {
                // success
            } else if(response.code == "failure") {
                // failure
            }
        }
    );

    setInterval(function() { get_user_updates(); }, 5000);
});

function get_user_updates() {
$.post(
    "get_user_update.php",
    function(data) {
        var response = jQuery.parseJSON(data);
        if(response.code == "success") {
            // success
        } else if(response.code == "failure") {
            // failure
        }
    }
);
}

pop_db.php ファイルは、時間がかかる PHP 作業を処理します。その中にクッキーを設定して、間隔でフェッチできるようにします。

require_once('includes/database.php');
$dbh = db_connect();

$response = array();
$response['code'] = "success";

setcookie('users_to_update', /*some value */, time() + 120);
setcookie('users_updated', 0, time() + 120);

// do lots of work in a loop

$_COOKIE['users_updated'] += 1;        

echo json_encode($response);

get user update ファイルは非常に単純です。

$response = array();
$response['code'] = "success";

$response['users_to_update'] = $_COOKIE['users_to_update'];
$response['users_updated'] = $_COOKIE['users_updated'];

echo json_encode($response);

したがって、これはすべて機能しません。データベースにデータを入力するための最初の POST 要求が終了した後に、間隔が実行されるようです。

これを達成するために DB テーブルを使用しようとしましたが、同様の問題に遭遇しました。

ここに欠けている概念的なものはありますか、それとも私のコードに何か問題があることに気づいた人はいますか?

4

0 に答える 0