PHP+jQuery模拟一个进程,动态获取长时间运行的进程

(1)

<?php
/*
 * 代码段被命名为long_process.php,这模拟了一个长进程,它有一个for循环,会循环10次,而且在每次循环后会有1秒的睡眠时间。
 * 最重要的是,这里我们用了一个session变量$_SESSION[“progress”]存住了进程,另外,不要忘了在每一次循环后要使用session_write_close()函数,
 * 因为会话数据通常在的终端关闭后存储,不需要调用session_write_close()函数,但因为会话数据被锁住从而防止同时的写操作。
 * 当你还在同时使用框架集的时候,你就会看到因为这种锁特性,框架是一个一个加载的,你可以在所有的session变量完成改变后,
 * 终止会话,从而缩短加载框架的总时间。
 * */
for($i=1;$i<=10;$i++){
    session_start();
    $_SESSION["progress"] = $i;
    session_write_close();
    sleep(1);
}
?>

(2)

<?php
/*
 * process.php这个完成起来比较简单,就是在客户端输出进程,这里的progress变量是在long_process.php中被更新的session变量。
 * */
session_start();
echo $_SESSION["progress"];
?>

(3)

/*
 * 它是进入模拟进程的入口,我省略了剩余的部分。
 * 它利用AJAX向服务器发出了两个请求,一个是初始化长进程,另一个是轮询服务器捕获进程,获得进程后,会更新在页面上的显示。
 * */

<script type="text/javascript">
    //start the long running process
    $.ajax({
        url: 'long_process.php',
        success: function(data){
        }
    });
    //start receiving progress
    function getProgress(){
        $.ajax({
            url: 'process.php',
            success: function(data){
                $("#progress").html(data);
                if(data<10){
                    getProgress();
                }
            }
        });
    }
    getProgress();
</script>
<div id="progress"></div>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值