关于死循环的疑问
第一个首页文件 index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php /** * Created by boiling * User: boiling * message:life just killing time */ $redis = new Redis(); $redis ->connect( '127.0.0.1' ,6379); if (! $pv = $redis ->get( 'pv:index' )){ $pv = $redis ->set( 'pv:index' ,1); } ?> <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>list</title> <script src= "https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js" ></script> </head> <body> <h1>当前访问量:<span><?php echo $pv ;?></span></h1> </body> <script src= "" ></script> <script> $.ajax({ url: "./list.php" , type: 'post' , dataType: 'json' }); </script> </html> |
第二个list数据进入文件 list.php
1 2 3 4 5 6 7 8 9 10 | <?php /** * Created by boiling * User: boiling * message:life just killing time */ $redis = new Redis(); $redis ->connect( '127.0.0.1' ,6379); $key = 'listpv:index' ; $redis ->rPush( $key ,1); |
第三个在后台匀速处理数据的文件 cron.php
<?php
/**
* Created by boiling
* User: boiling
* message:life just killing time
*/
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$key='listpv:index';
while (true)
{
if(false !== $redis->lPop($key)){
if(!$redis->get('pv:index')){
$redis->set('pv:index',0);
}else{
$redis->incrBy('pv:index',1);
}
}
}
能够实现队列的进和出,但是期间出现了一个现象!下面是图片讲述
只执行首页文件,这是清空的数据库
这是加载后的页面
这是刷新多次后数据库的数据
由于没有执行corn.php文件,所以没有lPop操作,pv无法+1;下面是执行cron.php文件
再次刷新首页
有了pv量的变化,关掉corn.php文件,查询数据库list队列已经出完!
但是在关闭了corn.php后在刷新首页仍旧有pv的增加,这我就不理解了,对于死循环的文件关闭后为什么程序还在进行?但是关闭了浏览器后死循环的程序就不再运行了!
正在回答 回答被采纳积分+1
- 参与学习 人
- 解答问题 721 个
掌握开发中必备技能解锁缓存、支付,邮件和短信发送等高端接口运用,直击工作重难点,通过开发简书项目熟练掌握Laravel5的开发技术。完成以上三个阶段的学习,成为满足企业需求的开发工程师。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧