计划任务 [task]

可定时或循环执行任务

使用本应用可以使网站定时执行指定的任务,可设置成循环、按月、按周执行.

可在后台手动增加任务,也可使第三方应用通过此应用内置的方法增加任务,从而实现定时发送邮件、定时发布文章等功能.

自动触发

访问前台页面时触发任务.如任务执行时间过长,网页加载会变慢.

如没有用户访问网页,则不会触发任务.

如果任务多并且对任务触发及时性有要求,不建议使用此方式.

task_php.bat

应用设置中方式请选择自动触发,接口触发不适合本脚本

仅做本地测试用,每一秒访问一次网站页面,需要先配置php命令行环境.

set phpfile="C:\site\classcms\index.php" 此处改为你的网站入口文件的路径.

接口触发

通过服务器部署定时脚本自动触发任务,此方法及时性高,且不会对前台访问造成影响.

task_bt.sh 通过宝塔计划任务触发任务

先将task_bt.sh复制为new_task_bt.sh 防止更新时被覆盖

修改new_task_bt.sh脚本内的接口网址(接口网址可以在应用设置中获取)

在宝塔中添加计划任务,类型为shell脚本,执行周期为每天0小时0分钟,脚本内容为:/www/wwwroot/classcms.com/class/task/new_task_bt.sh (路径需改为当前网站的路径)

任务添加完成后,需点击执行,如需停止任务,则需要在终端内执行ps -auxf 查看进程pid,再使用kill 结束任务

task_curl.sh 通过curl请求接口网址触发任务

先修改脚本内的接口网址(接口网址可以在应用设置中获取)

复制此文件到 /etc/rc.d/init.d/ 并增加执行权限

chkconfig --add task_curl.sh 添加为服务

chkconfig task_curl.sh on 开启服务

/etc/rc.d/init.d/task_curl.sh & 启动脚本

task_php.sh 通过本地php命令行触发任务

需要先配置php命令行环境

修改脚本内的入口文件路径和接口网址(接口网址可以在应用设置中获取)

复制此文件到 /etc/rc.d/init.d/ 并增加执行权限

chkconfig --add task_php.sh 添加为服务

chkconfig task_php.sh on 开启服务

/etc/rc.d/init.d/task_php.sh & 启动脚本

如服务器内有多个网站需要部署,可以将task_curl/php.sh改成另外的文件名

增加定时任务代码

增加一个立即执行的一次性任务:

$task_once=array('classfunction'=>'this:sendEmail','args'=>array('i@mydomain.com','hi','content'));

C('task:add',$task_once);

每60秒获取百度首页html代码:

$task_once=array('title'=>'loop_task','classfunction'=>'cms:common:send','args'=>'http://baidu.com','kind'=>'loop','looptime'=>60);

C('task:add',$task_once);

每周12345的8点发送消息:

$task_week=array('title'=>'week_task','classfunction'=>'xxx:sendMsg','args'=>array('13888888888','hi'),'kind'=>'week','weektime'=>'1;2;3;4;5','hourtime'=>'8');

C('task:add',$task_week);

每月1号4点30分备份文件:

$task_month=array('title'=>'month_task','classfunction'=>'bakclass:bakFile','kind'=>'month','monthtime'=>'1;2;3;4;5;6;7;8;9;10;11;12','daytime'=>'1','hourtime'=>'4','minutetime'=>'30');

C('task:add',$task_month);

参数说明

title:任务标题

classfunction:任务方法,如cms:common:send,也可使用this:xxx,表示调用当前应用的方法

args:运行参数,单个参数直接使用文本,多个参数使用数组

nexttime:设定任务下次执行的时间,如不传入此参数则由系统自动计算下次执行时间.系统会优先运行已过运行时间的任务

kind:执行方式.循环:loop 按月:month 按周:month

looptime:仅对loop方式有效,默认为0.为0时,仅运行一次任务,并且运行后会删除任务

monthtime:月份,仅对按月执行有效,如5;6;7代表5月6月7月

daytime:日,仅对按月执行有效,如15;25代表15号25号

weektime:日,仅对按周执行有效,如1;3;5代表周1周3周5

hourtime:小时,默认为0,如:12;20

minutetime:分钟,默认为0,0;20

task:add返回值为任务id,如后续需要修改或删除任务,则可以使用task:edit/task:del

应用信息
标识task
版本号1.3
文件大小15.6KB
发布时间2021-04-02
更新时间2023-12-26
PHP兼容--
作者 ClassCMS
安装
请在网站后台-应用商店内安装此应用.
也可在演示站点-应用商店内中安装并测试.
更新记录
1.3增加宝塔计划任务脚本
1.2自动触发更改为cms:load时触发
1.1bug修复