V2.0 - 控制台(定时任务)
yoyocmf 2020-08-13 21:44:22

自带默认任务

PHP Code复制内容到剪贴板
  1. // 定时拉取系统提醒  
  2. yii pull-remind/sys  
  3.   
  4. // 定时清理微信历史消息(需安装微信插件)  
  5. yii wechat/msg-history/index  
  6.   
  7. // 定时群发微信消息(需安装微信插件)  
  8. yii wechat/send-message/index  

 

定时任务

注意需要在Linux环境下运行,且让PHP的system函数取消禁用

表达式帮助:cron表达式生成器

表达式:

C/C++ Code复制内容到剪贴板
  1. Linux  
  2. *    *    *    *    *    *  
  3. -    -    -    -    -    -  
  4. |    |    |    |    |    |  
  5. |    |    |    |    |    + year [optional]  
  6. |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)  
  7. |    |    |    +---------- month (1 - 12)  
  8. |    |    +--------------- day of month (1 - 31)  
  9. |    +-------------------- hour (0 - 23)  
  10. +------------------------- min (0 - 59)  

 

1、需要先设置cron ,让 ./yii schedule/run --scheduleFile=@console/config/schedule.php 可以每分钟运行。

例如:

C/C++ Code复制内容到剪贴板
  1. // 每分钟执行一次定时任务  
  2. * * * * * /path-to-your-project/yii schedule/run --scheduleFile=@console/config/schedule.php 1>> /tmp/rageframeConsoleLog.text 2>&1  

 

在docker容器下设置定时任务:

PHP Code复制内容到剪贴板
  1. * * * * * docker exec -i 7798b php /var/进入容器后的项目完整路径/yii schedule/run --scheduleFile=@console/config/schedule.php 1>> /tmp/xxScheduleConsoleLog.text 2>&1  

 

宝塔里面可以这样设置:

WX20200911-175747@2x.png 

脚本也可以写成:

PHP Code复制内容到剪贴板
  1. cd /www/wwwroot/xzshzzdt_com/; ./yii schedule/run --scheduleFile=@console/config/schedule.php 1>> /tmp/pcConsoleLog.text 2>&1  

 

 

 

2、在 console/config/schedule.php 中加入新的定时任务:

PHP Code复制内容到剪贴板
  1. /** 
  2.  * 清理过期的微信历史消息记录 
  3.  * 
  4.  * 每天凌晨执行一次 
  5.  */  
  6. $schedule->command('test/index')->cron('0 0 * * *');  
  7.   
  8. /** 
  9.  * 定时群发微信消息 
  10.  * 
  11.  * 每分钟执行一次 
  12.  */  
  13. $schedule->command('test/index')->cron('* * * * *');  

 

4、具体例子

查看控制器 console\controllers\MsgHistoryController

 

更多使用文档:https://github.com/omnilight/yii2-scheduling

 

 

 

 

 

 

本文来自于:http://www.yoyo88.cn/note/yoyocmf/536.html

Powered by yoyo苏ICP备15045725号