php rpop没有作用,php阻塞式连接有没有性能的问题

本文介绍了如何在PHP环境中通过Redis的发布/订阅(PUB/SUB)机制实现实时消息传递,避免了BRPOP阻塞的问题。示例代码展示了如何创建一个持续监听的PHP脚本接收并处理来自特定频道的消息,以及如何从另一个程序向该频道发送消息。此外,还提到了使用RPOP代替BRPOP处理LIST的方法。
摘要由CSDN通过智能技术生成

首先你在shell下执行php,完全没有最长实行时间这一说,你完全可以把一个php脚本作为进程不停的监听。

但是,你用LIST做队列系统完全没必要,一个是BRPOP的block是有最长时间限制的,你不能一直hold在那里。而更好的选择是利用redis的PUB/SUB机制来做

下面是一个简单监听进程,它监听了channel-1,你在shell下执行它不要关掉<?php

$redis->subscribe(array('channel-1'), function ($redis, $chan, $msg) {

// do something

echo $msg;

});

然后在其它的程序里向channel-1发送你需要发送的消息<?php

$redis->publish('channel-1', 'hello, world!');更新LIST方法

如果你需要用LIST来操作,完全可以不要用BRPOP,直接在循环中RPOP就行<?php

while (true) {

$msg = $redis->rPop('list-1');

if (false !== $msg) {

// 这里处理消息

}

// 这里可以sleep

sleep(60);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值