计划任务是一项使系统在规定时间自动执行某些特定任务的功能,合理设置执行时间,能有效地为服务器减轻负担。触发任务除系统指定的时间外,用户行为也可触发。
1.创建计划任务:在 目录下,新建计划任务文件
样例:
2.在计划任务管理页面注册计划任务
3.访问 http://网站地址/index.php?g=Cron&m=Index&a=index
即可触发执行计划任务
1.独立主机
独立主机用户可以在系统增加计划任务间隔1分钟执行访问 http://example.com/index.php?g=Cron&m=Index&a=index&cron_secret_key=ztbcms
- Linux 下,添加 crontab 任务
# 借用 curl 来发起 http 请求
* * * * * curl 'http://网站地址/index.php?g=Cron&m=Index&a=index&cron_secret_key=ztbcms'
* * * * * php /你的应用根目录/index.php /Cron/Index/index/cron_secret_key/ztbcms
参考:Cron表达式生成器
- Windows 使用计划任务
Windows 没有默认安装Curl, Wget 等工具,你可以选择安装,并模仿linux上的调用写在bat脚本上即可。但是为了更具跨平台,可以参考下面的例子:
1.首先编写一个发送HTTP请求的 cron.php
(注意修改网站地址):
2.编写bat脚本
php {你的项目路径}\cron.php
注意: 需要把 php.exe
的路径放到环境变量
参考:
2.虚拟主机用户
虚拟主机用户,需要在网站模板中最底部增加一个js调用:
1. 更安全的触发计划任务
由于触发定时任务的入口链接是固定的,暴露出去容易被恶意攻击。因此提供了可配置的CRON_SECRET_KEY
私钥,请求计划任务入口链接的时带上私钥即可!
:
return array(
);
触发执行计划任务入口改为:http://网站地址/index.php?g=Cron&m=Index&a=index&cron_secret_key=ztbcms
开启记录计划任务执行日志,有助于监控计划任务的执行情况,如单个任务的执行时长,太长的计划可以作进一步优化
定期(默认每30日, 根据自己需求调整)删除计划任务日志,减少大量的日志带来的空间压力。计划任务 DeleteCronLog 建议每日凌晨时间执行一次即可。