进入该类配置redis 密码 记得安装phpredis扩展 本人使用的是6.2版本
在redis类增加以下4个方法 进行左近右出规则
/** * 在list的左边添加值为$value的元素 * @access public * @param $key 索引 * @param $value 值 * @return int */ public function lPush($key,$value){ return $this->handler->lPush($key,$value); } /** * 在list的右边取值值为$value的元素 * @access public * @param $key 索引 * @return int */ public function lPop($key){ return $this->handler->lPop($key); } /** * 在list去除重复值 * @access public * @param $key 索引 * @return int */ public function lrem($key1,$key2){ return $this->handler->lrem ($key1,$key2); } /** * 在list判断 * @access public * @param $key 索引 * @return int */ public function lLen($key){ return $this->handler->lLen ($key); }
然后使用自己的业务类进行调用处理即可
/** * 插入队列 * obj 数据表对象 */ public function savereids($obj,$key){ $redis=new Redis(); $limit=1; $chebox=false;//停止条件 while ($chebox==false) { $data=$obj->page($limit,100)->field('id')->select(); if(!empty($data)){ foreach ($data as $k=>$v) { $redis->lPush($key,$v['id']); } }else{ $chebox=true; } $data=[]; $limit+=1; } return 200; } /** * 出队 */ public function getrediskey($key){ $redis=new Redis(); $data=$redis->lPop($key); if($data!=false){ return $data; }else{ return 0; } } /** * 返回队列长度 */ public function getredislist($key){ $redis=new Redis(); $data=$redis->lLen($key); if($data!=false){ return $data; }else{ return 0; } }``` 最后进行定时任务,判断当天是否有推送的任务 如果有则进行入队操作、然后在根据推送任务的时间到达后开始发送信息 需要注意执行发送时候记得要放行php的内存ini_set('memory_limit','-1'); -1则是不限制、如果需要限制则填写 例如 1024M内存
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。