Laravel隊列小結

說明

  1. 隊列配置文件存放在 config/queue.php。
  2. 每一種隊列驅動的配置均可以在該文件中找到, 包括數據庫, Beanstalkd, Amazon SQS, Redis, 以及同步(本地使用)驅動。
  3. 其中還包含了一個null隊列驅動用於那些放棄隊列的任務。

使用databse驅動

  1. 修改 .env 中的配置項 QUEUE_DRIVERdatabase
  2. 首先要建立數據表來存儲任務,php artisan queue:table php artisan migrate
  3. 建立 job 文件, php artisan make:job SendReminderEmail
  4. 在 Controller 層 $this->dispatch(new SendRemindEmail()) 生產隊列,因而 database jobs 中記錄了最新添加的隊列任務
  5. 單一消費隊列 php artisan queue:work
  6. 依次消費全部隊列 php artisan queue:listen

使用beanstalkd驅動

  1. 安裝 beanstalkd: sudo apt-get install beanstalkd
  2. service beanstalkd start
  3. /usr/bin/beanstalkd -l 127.0.0.1 -p 11300
  4. 安裝其依賴擴展包 composer require pda/pheanstalk
  5. 依然修改 .env中的配置項 QUEUE_DRIVERbeanstalkd
  6. 生產隊列後的數據存儲在內存中,消費者直接從內存中獲取數據消費掉,其命令同上介紹。
  7. 安裝beanstalk-console,若是使用composer 可執行 composer create-project ptrofimov/beanstalk_console -s dev,若是使用laradock 可直接 docker-composer up -d beanstalk-console

使用supervisor驅動

  1. 安裝 supervisor: sudo apt-get install supervisor, 也能夠去官網下載最新穩定版本
  2. 編輯新的配置文件 cd /etc/supervisor/conf.d/demo.conf,配置項模板以下
  3. 從新讀取新的配置文件執行 sudo supervisorctl reread sudo supervisorctl update
  4. 啓動對應配置項worker執行 sudo supervisorctl start demo:*
[program:demo]
process_name=%(program_name)s_%(process_num)02d
command=php /your-project-path/artisan queue:listen --tries=3
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
stdout_logfile=/your-project-path/storage/logs/worker.log

寫在結尾

Script Maker Day Day Up!php

相關文章
相關標籤/搜索