我有一个 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 工作。在其中我设置了一个 cookie,以便我可以在时间间隔内获取它:
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);
获取用户更新文件很简单:
$response = array();
$response['code'] = "success";
$response['users_to_update'] = $_COOKIE['users_to_update'];
$response['users_updated'] = $_COOKIE['users_updated'];
echo json_encode($response);
所以这一切都行不通。间隔似乎在第一个 POST 请求填充数据库完成后运行。
我尝试使用数据库表来完成此操作,但遇到了类似的问题。
我在这里遗漏了一些概念性的东西,还是有人注意到我的代码有问题?