通过redis的消息对列提高聊天服务器的并发量 消息队列
1.保存数据到队列
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
$chat_content = array(
"chat_content2"=>1231231,
"chat_content1"=>"sdfsda",
"chat_content3"=>"asdfasdfasd",
"chat_content4"=>"adfasdfas",
);
$redis->lpush("chat_content_list",json_encode($chat_content));//在列表的头部添加一条或多条内容
$redis->close();
?>
2.保存数据到mysql是单独的一个定时任务,需要手动启动
把数据保存到mysql数据库
$redis = new redis();
$redis->connect('127.0.0.1', 6379);
if($redis->lsize("chat_content_list")>0){//lsize获取列表中key值的长度(有多少个value)没有的话返回0
$chat_info = $redis->rpop("chat_content_list");//在列表尾部取出一条数据(出队,取出的数据value在列表中就删除了)
$chat_info = json_decode($chat_info,true);//不加true返回的是一个对象,加true返回数组
//普通聊天
$pdo = new PDO("mysql:host=127.0.0.1;chatset=utf8;dbname=webim;port=3306","root","");
//这里的方法需要从新实现
$pdo->add_record($chat_info);
}else{
sleep(1);
}
$redis->close();
?>