|
我这有三个页面
A->FTP发送文件(php执行)边发边存SESSION
B->读SESSION-输出JS
C->AJAX调用A(1次),B页面,显示进度
问题,
1、为什么调用C执行A,B后,进度显示不出来,要执行完了后才显示全不进度
2、为什么执行A时,几乎同时执行B,要等到A的文件发送完了后才显示
代码
A- >
<?php
session_start();
if(!defined('BASE_URL'))die('Hacking Attmpt!');
set_time_limit(600);
$width = 652;
$total = 1000;
$pix = $width / $total;
$progress = 10;
//echo '<meta http-equiv="Content-Type" c />';
$data = array(
'host' => '127.0.0.1',
'user' => 'bizman',
'pass' => 'jacson',
'port'=>21
);
$script = <<<eot
<script language="JavaScript">
updateProgress("Begain connect ftp server....", 1);
</script>
eot;
$_SESSION['sent'] = $script."\n";
if(FALSE===($ftp = new Ostenia_File_Remote_Ftp($data))){
$script = <<<eot
<script language="JavaScript">
updateProgress("Can not connect ftp server....", 1);
</script>
eot;
$_SESSION['sent'] = $script."\n";exit;
}
try{
$ftppath = '/ajaxtest/';//要创建的目录
$path = ROOT_PATH.'data/wp/wp_extract_data/wp/2.3.2wordpress-2.3.2/wordpress/';
$source = ftp_array($path);
$tt = count($source);
foreach ($source as $item) {
$fp = array(
'path'=>$item['path'],
'realname'=>$item['realname'],
);
$f = $fp['path'].$fp['realname'];//得到FTP路径
$e = explode("$path",$f);
$e = array_pop($e);#转义路径
$clientftp = $ftppath;//client ftp path
$realyftppath = $clientftp.$e; //FTP上传后的文件名
$e = basename($f);// 获得文件名
$ftp->upload($fp, $realyftppath);//sent file to severs
$pix = $width/$tt;
$progress += $pix;
$length = min($width, intval($progress));
$script = <<<eot
<script language="JavaScript">
updateProgress("Senting $e ,please waiting....", $length);
</script>
eot;
$_SESSION['sent']= $script."\n";
///是不是这地方写的问题
}#end foreach
//print_r($_SESSION['sent']);
}catch (Ostenia_File_Protocol_Exception $e) {
$pix = $width/$tt;
$progress += $pix;
$length = min($width, intval($progress));
$script = <<<eot
<script language="JavaScript">
updateProgress("system error", $length);
</script>
eot;
exit;
}
$ftp->close();//关闭FTP
$pix = $width/$tt;
$progress += $pix;
$length = min($width, intval($progress));
$script = <<<eot
<script language="JavaScript">
updateProgress("Finished sent all the files.", $width);
</script>
eot;
$_SESSION['sent'] = $script."\n";
?>
B
if((isset($_SESSION))&&(!empty($_SESSION))){
header("Content-type: text/html; charset=utf-8");
//header('Content-type: text/javascript');
print_r($_SESSION['sent']);
session_unset('sent');
}else{
header("Status: 404 Not Found");
exit;
}
C-》
<?php
$width = 652;
$total = 1000;
$pix = $width / $total;
$progress = 10;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" c />
<title>Javascript Progress Bar Demo - Gracecode.com</title>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript">
function loadpage(){
$.get("/load.php?p=sent");
alert('LOAD Page is ok');
}
function loadsession(Progress){
if(Progress){
$("#show").load("/load.php?p=load");
}
}
var i = 0;
function doProgress() {
if (i > 10) {
alert("Progress Bar Finished!");
return;
}
if (i <= 10) {
setTimeout("doProgress()", 500);
loadsession(i);
i++;
}
}
$(document).ready(function() {
loadpage();
doProgress();
});
</script>
<script language="JavaScript">
<!--
function updateProgress(sMsg, iWidth)
{
document.getElementById("status").innerHTML = sMsg;
document.getElementById("progress").style.width = iWidth + "px";
document.getElementById("percent").innerHTML = parseInt(iWidth / <?php echo $width; ?> * 100) + "%";
}
//-->
</script>
</head>
<body>
</head>
<body>
<div style="margin:4px 4px 0px 20px; padding: 8px; color:#FF0000; font-size:13px; font-weight:bold;border: 1px solid gray; margin-left:14px;background: #EAEAEA; width: <?php echo $width+8; ?>px">
<div style="text-align:center"><font color="#FF0000">发送文件中...</font></div>
<div style="padding: 0; background-color: white; border: 1px solid navy; width: <?php echo $width; ?>px">
<div id="progress" style="padding: 0; background-color: #FFCC66; border: 0; width: 0px; text-align: center; height: 16px"></div>
</div>
<div id="status"> </div>
<div id="percent" style="position: relative; top: -30px; text-align: center; font-weight: bold; font-size: 8pt">0%</div>
</div>
<div id ="show"></div>
</body>
</html>
[ 本帖最后由 bizman 于 2008-5-5 16:58 编辑 ] |
|