您的位置:首页 > 数据库 > Redis

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: