Redis队列php多线程请求
2018-01-07 19:03
232 查看
在数据采集的过程中,会有很多次请求.每个请求要发送的信息无外乎都有一个关键的KEY,多数是ID.
把这个ID写入到一个栈里面
$redis->lpush("idlist",$id);
然后在PHP代码里面写一个死循环
public function getinfos(){
while(true){
$id = $redis->lpop("idlist");
if($id){
//do something here/
}else{
break;
}
}
}
然后再在外面这样调用
function
list_get_infos(){
for($i=0;$i<10;$i++){
exec("/usr/local/php/sbin/php","脚本地址");
}
}
如此一来,就会同时起10个进程来一起从这个redis的栈里面pop出id,并通过ID获取想要的数据.
注意:
1,首先进入死循环后,如果用过的变量一定要注意适时的销毁.也就是unset.否则可能会导致内存溢出.
2,代码里要做合适的容错处理,否则报错的话会出现进程提前结束.
3,适当的输出日志.方便错误的处理.并且可以通过查看redis的队列长度来判断程序的执行结果.
来源:http://blog.csdn.net/merlin_feng/article/details/42583443
把这个ID写入到一个栈里面
$redis->lpush("idlist",$id);
然后在PHP代码里面写一个死循环
public function getinfos(){
while(true){
$id = $redis->lpop("idlist");
if($id){
//do something here/
}else{
break;
}
}
}
然后再在外面这样调用
function
list_get_infos(){
for($i=0;$i<10;$i++){
exec("/usr/local/php/sbin/php","脚本地址");
}
}
如此一来,就会同时起10个进程来一起从这个redis的栈里面pop出id,并通过ID获取想要的数据.
注意:
1,首先进入死循环后,如果用过的变量一定要注意适时的销毁.也就是unset.否则可能会导致内存溢出.
2,代码里要做合适的容错处理,否则报错的话会出现进程提前结束.
3,适当的输出日志.方便错误的处理.并且可以通过查看redis的队列长度来判断程序的执行结果.
来源:http://blog.csdn.net/merlin_feng/article/details/42583443
相关文章推荐
- PHP中利用redis实现消息队列处理高并发请求
- PHP中利用redis实现消息队列处理高并发请求--简洁代码实现效果
- PHP中利用redis实现消息队列处理高并发请求
- redis 队列操作的例子(php)
- PHP多线程异步请求HTTP
- redis 队列操作的例子(php)
- PHP使用php-resque库配合Redis实现MQ消息队列的教程
- 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造
- Redis队列——PHP操作简单示例
- PHP使用Redis实现消息队列
- redis 队列缓存 + mysql 批量入库 + php 离线整合
- redis队列处理在PHP里的使用 star.Hou的红楼一梦
- 使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节
- PHP下使用Redis消息队列发布微博(复制)
- php+redis消息队列抢购实现
- 实现PHP多线程异步请求的3种方法
- PHP用redis实现多进程队列
- PHP基于Redis消息队列实现发布微博的方法
- php实现redis消息队列将数据保存到mysql
- redis 队列操作的例子(php)