简介在编写事件/监听器实例之前,数据直接存储在数据库中。其实这一步可以放入队列中执行。laravel队列有多种驱动可供选择,这里使用redis。创建队列使用phpartisanmake:jobBrowseLogQueue创建队列文件,最后生成Jobs/BrowseLogQueue.php文件。功能只是数据存储,代码很简单。需要注意的是类中可以指定最大失败次数等配置,代码如下ip_addr=$ip_addr;}$this->request_url=$request_url;$this->city_name=$city_name;$this->created_at=$now;第$is->updated_at=$now;}/***执行作业。**@returnvoid*/publicfunctionhandle(BrowseLog$browseLog){$log=new$browseLog;$log->ip_addr=$this->ip_addr;$log->request_url=$this->request_url;$log->city_name=$this->city_name;$log->created_at=$this->created_at;$log->updated_at=$this->updated_at;$日志->保存();}/***任务失败*@paramException$exception*/publicfunctionfailed(Exception$exception){//发送邮件通知管理员event(newNotifyAdmin($exception->getMessage()));}}分发任务修改监听CreateBrowseLog.php文件如下/***处理事件。**@paramUserBrowse$event*@returnvoid*/publicfunctionhandle(UserBrowse$event){//不记录本地访问$arr=['127.0.0.1'];if(!in_array($event->ip_addr,$arr)){/*$log=new\App\模型\浏览日志();$log->ip_addr=$event->ip_addr;$log->request_url=$event->request_url;$log->city_name=$event->city_name;$日志->保存();*/BrowseLogQueue::dispatch($event->ip_addr,$event->request_url,$event->city_name,now());/*BrowseLogQueue::dispatch($event->ip_addr,$event->request_url,$event->city_name)->delay(now()->addMinute(1));延迟添加*/}}运行队列的最后一步是运行队列。执行phpartisanqueue:work操作没有问题,但是目前没有问题最后需要使用Supervisor进程守护,下篇继续参考资料:queues。
