• tp6消息队列


    1. 尾部写入
    2. for ($i=1;$i<=1000;$i++){
    3. Cache::store('redis')->rpush('list',date("Y-m-d H:i:s")."消息{$i}");
    4. }
    5. 头部读取消息队列并删除
    6. $list = Cache::store('redis')->lpop('list');

     

    1、随便建个方法浏览器访问,加入redis消息队列

    1. public function hello(){
    2. for ($i=1;$i<=10;$i++){
    3. Cache::store('redis')->rpush('list1',date("Y-m-d H:i:s")."消息{$i}");
    4. }
    5. }

    2、队列

    tp6创建命令生成文件OrderTask 

    php think make:command OrderTask 

    加入命令配置文件config/console.php

    1. <?php
    2. // +----------------------------------------------------------------------
    3. // | 控制台配置
    4. // +----------------------------------------------------------------------
    5. return [
    6. // 指令定义
    7. 'commands' => [
    8. //定时任务命令
    9. 'OrderTask ' => app\command\OrderTask ::class
    10. ],
    11. ];

    OrderTask .php代码

    1. namespace app\admin\command;
    2. use think\console\Command;
    3. use think\console\Input;
    4. use think\console\Output;
    5. use app\admin\model\Dade;
    6. use think\facade\Cache;
    7. use think\facade\Db;
    8. class OrderTask extends Command
    9. {
    10. protected function configure()
    11. {
    12. $this->setName('ExcelTask');
    13. }
    14. protected function execute(Input $input, Output $output)
    15. {
    16. //php think OrderTask
    17. $this->start();
    18. $output->writeln('执行窗口关闭');
    19. }
    20. /**
    21. * 启动
    22. */
    23. public function start()
    24. {
    25. while (1) {
    26. //执行读取,看效果
    27. sleep(1);
    28. $list = Cache::store('redis')->lpop('list1');
    29. if(!empty($list)){
    30. try{
    31. $code = $this->order($list);
    32. }catch (\Exception $e){
    33. print_r($e->getMessage());
    34. echo "\n";
    35. $code = false;
    36. }
    37. if($code == false){
    38. Cache::store('redis')->rpush('list1',$list."重新加入队列");
    39. break;
    40. }
    41. $data = Date("Y-m-d H:i:s");
    42. echo $list."----{$data}\n";
    43. }
    44. }
    45. }
    46. public function order($list){
    47. // 启动事务
    48. Db::startTrans();
    49. try {
    50. $data = [];
    51. $data['name'] = "大得";
    52. $data['date'] = $list;
    53. Dade::create($data);
    54. // 提交事务
    55. Db::commit();
    56. } catch (\Exception $e) {
    57. print_r($e->getMessage());
    58. echo "\n";
    59. // 回滚事务
    60. Db::rollback();
    61. return false;
    62. }
    63. return true;
    64. }
    65. }

    3、停止后配合Supervisor守护进程再次窗口执行命令

    php think OrderTask

    为什么要守护进程,因为数据库一段时间连接使用会断开,数据库回收。

    开启tp6,有时候也不好使,看情况,我的不好使,可能你的好

    // tp6数据库配置是否需要断线重连
    'break_reconnect'   => true,

     

     

  • 相关阅读:
    Python开发利器之VS Code
    基于模糊预测与扩展卡尔曼滤波的野值剔除方法
    web课程设计网页规划与设计:HTML+CSS美妆设计题材——雅诗兰黛(5页)
    EPSG竟然是个“石油组织”?
    猿创征文|瑞吉外卖——管理端_(菜品)分类管理
    unordered_map/unordered_set的学习[unordered系列]
    我服了!SpringBoot升级后这服务我一个星期都没跑起来!(下)
    Hadoop HA高可用原理介绍
    文件上传漏洞
    解读《领域驱动设计 软件核心复杂性应对之道》(二)
  • 原文地址:https://blog.csdn.net/qq_34631220/article/details/127937172