zoukankan      html  css  js  c++  java
  • Laravel 队列功能 简单应用

    生成任务类 

    默认情况下,应用程序的所有可排队任务都存储在 app/Jobs 目录下。如果 app/Jobs 目录不存在,则会在运行 make:job Artisan 命令时将创建它。你可以使用 Artisan CLI 生成一个新的队列任务:

    php artisan make:job ProcessPodcast
    <?php
    
    namespace AppJobs;
    
    use IlluminateBusQueueable;
    use IlluminateContractsQueueShouldQueue;
    use IlluminateFoundationBusDispatchable;
    use IlluminateQueueInteractsWithQueue;
    use IlluminateQueueSerializesModels;
    use IlluminateSupportFacadesLog;
    
    class ProcessPodcast implements ShouldQueue
    {
        use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
        protected $message;
    
        /**
         * Create a new job instance.
         * 创建一个新的job实例
         * @return void
         */
        public function __construct(string $message)
        {
            $this->message = $message;
        }
    
        /**
         * Execute the job.
         * 执行job
         * @return void
         */
        public function handle()
        {
            Log::info($this->message);
        }
    }

    运行队列处理器 (worker)

    Laravel 包含一个队列工作器,它将在新任务被推入队列时处理它们。您可以使用 queue:work Artisan 命令运行 worker。请注意,一旦 queue:work 命令已经启动,它将一直运行,直到它被手动停止或你关闭你的终端:

    php artisan queue:work

    在控制器中加入一个测试方法,直接调用队列类的 dispatch方法,类似生产了一个任务

    use AppJobsProcessPodcast;
    
    public function test() {
        ProcessPodcast::dispatch('TestController test message');    
    }

    队列执行结果:新增了一条test message log

     

  • 相关阅读:
    [原创]二路归并排序针对数组的场景(C++版)
    [原创]装饰模式(java版)
    [原创]Java中Map根据值(value)进行排序实现
    [原创]适配器模式(java版)
    信了你的邪
    String和Date转换
    电商运营面试题
    springCloud发送请求多对象参数传递问题
    JS实现页面以年月日时分秒展示时间
    java三种注释以及参数涵义(转)
  • 原文地址:https://www.cnblogs.com/starfish29/p/13633687.html
Copyright © 2011-2022 走看看