laravel框架 三类: 定时任务 定时任务+队列 异步队列 大集合

①定时任务

laravel框架 三类: 定时任务 定时任务+队列 异步队列 大集合_第1张图片

一、代码:

  1. 创建命令(php artisan make:command SendEmails) 会在app/Console/Commands 目录中创建一个新的命令类
  2. 编写调用名称,命名描述,执行命令在handle()中编写逻辑代码

     3.在 app/Console/Kernel.php 文件中的 schedul方法 中 调用并定时执行

二、服务器:

1、在服务器中加入定时任务,并在项目中给予权限

直接运行定时任务是 php artisan setActivityStatus

查看命令crontab -l -u www

编辑命令是crontab -e -u www

查看权限是 ls -l

需要特别注意,/home目录下需要www用户目录,项目的文件归属需要是www用户

git pull 完成后需要执行chown -R www.www *


用www用户设置cron,需要在home下添加www目录  mkdir www

参考:

(https://learnku.com/docs/laravel/7.x/artisan/7480)

(https://learnku.com/docs/laravel/7.x/scheduling/7492#scheduling-artisan-commands)

(https://learnku.com/laravel/t/1402/laravel-timing-task)

②使用队列

第一种

实现步骤:

  • 框架代码
  1. 在 app/Console/Kernel.php 文件中的 schedul 方法 中 调用并定时执行(同定时案例)
  2.  创建控制器 写功能方法

laravel框架 三类: 定时任务 定时任务+队列 异步队列 大集合_第2张图片

  • 服务器配置(第二种一样需要配置)

1、下载安装supervisor  命令:

sudo pip install supervisor  

或者 yum install -y supervisor

2、编辑文件 vi /etc/supervisord.conf 文件

laravel框架 三类: 定时任务 定时任务+队列 异步队列 大集合_第3张图片

案例改最后两行:

[include]

files = /etc/supervisor/*.conf

命令: echo_supervisord_conf > /etc/supervisord.conf

3、命令:mkdir /etc/supervisor 

4、新增一个 Supervisor 配置文件 注意:日志地址,queue名称,redis 等配置

laravel框架 三类: 定时任务 定时任务+队列 异步队列 大集合_第4张图片

cd data/wwwlogs/

mkdir xxx

chown -R www.www xxx/

5、重载 Supervisor   几个常用命令

  1. supervisorctl reload
  2. sudo service supervisord start
  3. sudo supervisorctl reload
  4. 查看状态 supervisorctl status 

  5. 查看运行 ps -ef|grep 'queue:work'

6、注意

.env 文件

QUEUE_CONNECTION=redis

7、归属需要是www用户 chown -R www.www *

参考案例:

使用 Supervisor 管理 Laravel 队列进程 | Laravel | Laravel China 社区

centos 7 使用supervisor 管理laravel 队列 - SegmentFault 思否

supervisor 管理 Laravel 队列如何配置? | Laravel | Laravel China 社区

第二种

事件系统队列 框架代码

官方文档:https://learnku.com/docs/laravel/9.x/events/12228#queued-event-listeners

laravel框架 三类: 定时任务 定时任务+队列 异步队列 大集合_第5张图片

 laravel框架 三类: 定时任务 定时任务+队列 异步队列 大集合_第6张图片

1、 ShareEvent

2、 ShareLIstener

3、某个控制器 调用   event(new ShareEvent($openid));

4、注册事件  

'App\Events\ShareEvent'=>[
    'App\Listeners\ShareListener'
]

测试 开启监听

php artisan queue:work redis --queue='share'

清除緩存

php artisan cache:clear

 php artisan config:clear

php artisan queue:restart

你可能感兴趣的:(功能点,php,服务器,开发语言,laravel)