Answers
首先你在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); }
wolfou
answered 10 years, 5 months ago