【发布时间】:2012-01-18 20:39:06
【问题描述】:
所以,我正在为 CSV 处理脚本制作进度条。 dnc_scrubber.php 通过 CSV 并根据数据库检查电话号码,在单独的文件中返回匹配和不匹配的数据。 lines.php 返回要处理的总行数,而 progress.php 返回已处理的行数。我使用这两个数字来创建 jQuery 的进度条功能完成的工作百分比。
我的问题是doProgressBar() 中的第一个.ajax() 调用在对dnc_scrubber.php 的调用完成之前不会完成。澄清一下,在 Chrome 中查看网络监视器时,向 lines.php 发出请求的同时向 dnc_scrubber.php 发出请求,但直到 dnc_scrubber.php 完成运行后才收到响应。以下是相关代码:
$('#progressbar').progressbar();
$.ajax({
url: 'dnc_scrubber.php',
type: 'POST',
async: true,
data: querystring,
success: function(){
for (i = 0; i < files.length; i++){
$('#complete').append('<a href="process/MATCHED - ' + files[i] + '">MATCHED - ' + files[i] + '</a><br />');
$('#complete').append('<a href="process/SCRUBBED - ' + files[i] + '">SCRUBBED - ' + files[i] + '</a><br />');
}
}
});
function doProgressBar(){
$.ajax({
url: 'lines.php',
async: true,
dataType: 'json',
complete: function (rez) {
lines = JSON.parse(rez.responseText);
lines = parseInt(lines.lines);
console.log('dpg1 - lines: ' + lines);
$.ajax({
url: 'progress.php',
async: true,
dataType: 'json',
complete: function (rez1) {
prog = JSON.parse(rez1.responseText);
prog = parseInt(prog.progress);
console.log('dpg2 - lines: ' + lines + ' prog: ' + prog);
if (lines > prog){
var bar = (prog / lines) * 100;
var bar = Math.round(bar);
$('#progressbar').progressbar('option', 'value', bar);
setTimeout(doProgressBar(), 1000);
console.log('dpg3 - lines: ' + lines + ' prog: ' + prog + ' bar: ' + bar);
} else if (lines == prog){
$('#progressbar').progressbar('option', 'value', 100);
console.log('dpg3 - lines == prog');
}
}
});
}
});
}
setTimeout(doProgressBar(), 100);
这是正常功能吗?我想做的事是不可能的吗?我不知所措...提前感谢您的帮助
编辑:
lines.php
session_start();
header('Content-type: application/json');
echo json_encode(array('lines' => $_SESSION['lines']));
progress.php
session_start();
header('Content-type: application/json');
echo json_encode(array('progress' => $_SESSION['lines_processed']));
CSV 处理器在每行的检查过程结束时将$_SESSION['lines_proccessed'] 加一
【问题讨论】:
-
服务器在任何给定时间允许多少个连接?
-
@nobody 根据我的 IT 人员的说法,服务器允许大量连接。这是一个运行 Lampp 的内部 Ubuntu 开发服务器 - 大部分是默认值。
标签: php javascript jquery ajax