①定时任务
一、代码:
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、下载安装supervisor 命令:
sudo pip install supervisor
或者 yum install -y supervisor
2、编辑文件 vi /etc/supervisord.conf 文件
案例改最后两行:
[include]
files = /etc/supervisor/*.conf
命令: echo_supervisord_conf > /etc/supervisord.conf
3、命令:mkdir /etc/supervisor
4、新增一个 Supervisor 配置文件 注意:日志地址,queue名称,redis 等配置
cd data/wwwlogs/
mkdir xxx
chown -R www.www xxx/
5、重载 Supervisor 几个常用命令
查看状态 supervisorctl status
查看运行 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
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