使用redis 的list类型实现异步队列。
- 队列消费者代码:
$redis = new redis;
$redis->connect('127.0.0.1',6379);
$redis->auth("password");
$redis->setOption(Redis::OPT_READ_TIMEOUT,-1); // 使其守护进程不会出现超时错误
while(true){
/**
* 移除并获取列表的最后一个元素。
* 阻塞程序等待列表弹出元素,
* 第二个参数是等待多少s,如果为0表示无限等待
*/
$data = $redis->bRpop("list:queue",0);
$stdclass = json_decode($data[1]);
var_dump($stdclass);
// todo .... 执行业务代码
}
- 队列生产者代码
// 生产者
$redis = new redis;
$redis->connect('127.0.0.1',6379);
$redis->auth("password");
$data = [
'....'
];
$redis->lpush("list:queue",json_encode($data));
网友评论