关于死循环的疑问
第一个首页文件 index.php
<?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
<?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
- 参与学习 人
- 解答问题 722 个
掌握开发中必备技能解锁缓存、支付,邮件和短信发送等高端接口运用,直击工作重难点,通过开发简书项目熟练掌握Laravel5的开发技术。完成以上三个阶段的学习,成为满足企业需求的开发工程师。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星