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 工作。在其中我设置了一个 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 请求填充数据库完成后运行。

我尝试使用数据库表来完成此操作,但遇到了类似的问题。

我在这里遗漏了一些概念性的东西,还是有人注意到我的代码有问题?

4

0 回答 0