実行に時間がかかる 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 テーブルを使用しようとしましたが、同様の問題に遭遇しました。
ここに欠けている概念的なものはありますか、それとも私のコードに何か問題があることに気づいた人はいますか?