使用AJAX和PHP从进程进行连续状态更新
我有一个php脚本,可以通过FTP将大型媒体文件推送到远程服务器。这项工作进展顺利。我希望对此进行增强,并使其报告给发起传输的ajax客户机。基本上,在每次转移后报告如下内容: 1/12:文件xbacd.dat已成功复制到/dir1/sub2/-2.2Mb 12月2日:在/var/www/files-Resuming中未找到文件impact_analog.ppt 3/12:文件abc_consult.doc已成功复制到/dir1/sub3/-8.2Mb 另一方面,Ajax处理程序应该在它到达时以div的形式显示它 我没有幸使用以下代码,因此切换到AJAX使用AJAX和PHP从进程进行连续状态更新,php,jquery,ajax,Php,Jquery,Ajax,我有一个php脚本,可以通过FTP将大型媒体文件推送到远程服务器。这项工作进展顺利。我希望对此进行增强,并使其报告给发起传输的ajax客户机。基本上,在每次转移后报告如下内容: 1/12:文件xbacd.dat已成功复制到/dir1/sub2/-2.2Mb 12月2日:在/var/www/files-Resuming中未找到文件impact_analog.ppt 3/12:文件abc_consult.doc已成功复制到/dir1/sub3/-8.2Mb 另一方面,Ajax处理程序应该在它到达时以
ob_start();
require_once 'init.php';
while(files){
// Transfer code
// status
echo "$idx/$count: File $f has been copied successfully to $tar_dir - $s";
ob_flush;
flush;
}
我会告诉你我曾经做过什么,我不确定这是最好的解决方案,但它奏效了。 您应该有一个iFrame,并将表单的目标设置为iFrame
<script>
function showMsg(msg){
alert(msg);
}
</script>
<form action="theCommandHandler.php" method="post" target="myIframe">
<input type="submit" value="Do A Command" />
</form>
<iframe name="myIframe"></iframe>
函数showMsg(msg){
警报(msg);
}
一旦发布到commandhandler.php,您的php脚本中应该有一行代码如下:
echo "<script>parent.showMsg('$idx/$count: File $f has been copied successfully to $tar_dir - $s');</script>";
echo“parent.showMsg('$idx/$count:File$f已成功复制到$tar_dir-$s');”;
您可以将任意数量的消息发送回客户端,它们将调用父文档上的showMsg函数。查看javascript中的长轮询。这对您来说可能也很方便