搜索
博主信息
博文 53
粉丝 0
评论 0
访问量 15720
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP 消息队列开发:记录管理员操作日志队列的创建与使用
い独霸天下う
原创
339人浏览过

消息队列整个流程分为生产和消费,生产有由程序发起。消费由命令执行。
消息队列文件一般存放在app/jobs目录下。可以以一个类为一个队列进行开发,或者一个类中有多个小队列都能加入生产进行消费。目前推荐一个类为一个队列进行开发。

示例

例如:新增记录管理员操作日志队列

创建文件 app\jobs\AdminLogJob.php

handle方法中一定要返回执行的结果,例如返回true,证明当前逻辑执行完成,没有任何问题不需要二次执行.会立即销毁当前队列;
如果因某个逻辑执行错误返回false或者0或者null或者空字符串都认定本次执行的任务失败,需要再次加入队列继续执行一次,直到执行返回成功为止。或者执行3次后也会自动销毁当前队列。

  1. namespace app\jobs;
  2. use app\services\system\log\SystemLogServices;
  3. use crmeb\basic\BaseJobs;
  4. use crmeb\traits\QueueTrait;
  5. /**
  6. * 后台日志
  7. * Class AdminLogJob
  8. * @package app\jobs
  9. */
  10. class AdminLogJob extends BaseJobs
  11. {
  12. use QueueTrait;
  13. public function handle($adminId, $adminName, $module, $rule, $ip, $type)
  14. {
  15. //写入数据库逻辑
  16. //必须返回执行最后的结果
  17. return true;
  18. }
  19. public function test()
  20. {
  21. //测试小队列执行
  22. return true;
  23. }
  24. }

使用日志记录队列

  1. use app\jobs\AdminLogJob;
  2. //加入队列默认会直接执行handle内的逻辑
  3. AdminLogJob::dispatch([$adminId, $adminName, $module, $rule, $ip, $type]);
  4. //加入延迟队列,延迟600秒后执行,默认执行handle内的逻辑
  5. AdminLogJob::dispatchSece(600, [$adminId, $adminName, $module, $rule, $ip, $type]);
  6. //加入队列,执行AdminLogJob内的test方法
  7. AdminLogJob::dispatch('test', [$adminId, $adminName, $module, $rule, $ip, $type]);
  8. //加入延迟队列,延迟600秒后执行,执行AdminLogJob内的test方法
  9. //建议一个队列处理一个逻辑,当前示范的是多个小队列
  10. AdminLogJob::dispatchSece(600,'test', [$adminId, $adminName, $module, $rule, $ip, $type], 600);

调试队列

以下为调试队列的写法,不能使用在正常流程中,只为了调试使用。

  1. use app\jobs\AdminLogJob;
  2. //直接实例化调试当前job时候执行成功
  3. $res = (new AdminLogJob)->handle($adminId, $adminName, $module, $rule, $ip, $type);
  4. var_dump($res);

附件:https://gitee.com/ZhongBangKeJi/CRMEB

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学