Redis sub/pub后台异步实时请求
来自技术开发小组内部wiki
基于Redis sub/pub的后台异步实时请求可以将一些不是及时显示页面的任务丢到后台进行处理,从而缩短前台页面响应时间。
代码路径
1 控制器:fmb.dianping/application/controllers/cmdrun/redis_subcribe.php 2 Redis订阅类:fmb.dianping/application/libraries/RedisSubcribe.php 3 操作模型:fmb.dianping/application/models/redis_msg/*
使用方法
发布消息 <source lang="php">
$redis = new Redis(); $redis->connect('127.0.0.1',6379); $msg="test1_model-index-param1-param2";//消息类型 类-方法-参数1-参数2 $channel="msg.test"; //所有消息频道都要为msg.下的子频道 $data['channel']=$channel; $data['message']=$msg; $data['publish_time']=time(); $this->db->insert('fmb_redis_msg',$data);//将消息插入fmb_redis_msg表。 $redis->publish($channel, $msg);
</source> 处理类和方法 例如 fmb.dianping/application/models/redis_msg/test1_model.php <source lang="php"> class Test1_model extends MY_Model{ public function index($params){ echo ' 这是测试方法----test1_model-index----';
echo '下面是接收到的参数数组'; print_r($params);
return 1; //程序执行完成,返回1 代表执行成功,返回其它,代表执行失败,会再次尝试执行该方法,一共尝试三次 }
} </source>