【发布时间】:2013-09-06 18:40:59
【问题描述】:
我有一个执行某些操作的循环,在循环内我有一个递增的会话计数器。这个循环完成大约需要 10-15 分钟,所以我想要某种进度条,告诉用户它通过循环走了多远。
我的 AJAX 调用假设检索我在循环内设置的会话值,但它似乎不起作用。我得到未定义的索引错误。
我在某处读到会话一旦被一个脚本使用就被锁定,直到它完成使用它,才解锁它。是否可以在会话上强制解锁,以便我的 ajax 脚本可以检索会话的值?
例子:
脚本 1(循环):
while(SOME CONDITION) {
//DO ACTIONS
$_SESSION['progress'] = $currProgress + 1;
}
脚本 2(AJAX 调用检索会话):
function getCurrentProgress() {
$progress = isset($_SESSION['progress']) ? $_SESSION['progress'] : 0;
echo json_encode(array('progress' => $progress));
}
JS AJAX(每 30 秒调用一次)到上述脚本
【问题讨论】:
-
您开始会话了吗?
-
我已经在下面发布了我对您问题的直接回答,但题外话我很好奇:您的程序到底在做什么需要 10-15 分钟?对于使用 PHP 的大多数事情,以及对于大多数数据库的大小,我认为你很有可能从它中获得比通过一些优化获得更好的性能。
-
它确实将一个巨大的 excel 文件导入数据库。花费很长时间检查包含多达 700 万条记录的表的重复项