#拓展开发背景
在项目稍微复杂一些的项目当中,真个项目可能是多个语言配合完成不同的模块,其中计划任务是一种最常见的需求
平时大部分初级的做法就是利用Linux的crontab服务,这样的好处是,只需要我们自己编写定时执行的任务脚本即可,
但是维护就不是很方便了,每次变更任务都需要登录服务器手动crontab -e修改,这样做的弊端主要有两个:
1.每次都登录服务器,存在安全风险和不确定风险.
2.不能自动化.
soter-extension-cron就是为了解决上面的两大难题,开发人员完全不需要接触服务器,变更计划任务只需要发布一
次代码即可. 推荐用supervisor管理soter-extension-cron服务,在服务器上启动了soter-extension-cron服务之后,
每次我们在项目里面变更了计划任务代码的时候,只需要重新发布代码到服务器上即可.
#拓展介绍
soter-extension-cron是基于Soter实现的计划任务服务,可以周期性的执行Soter的task,
执行周期完全兼crontab,而且支持秒级别的.
#环境要求
Linux
PHP 5.3+
#安装拓展 1.下载拓展包zip文件,然后解压,比如解压后是:/home/soter/cron 2.复制文件夹cron到soter项目的application/packages/里面 3.启用cron,在入口文件里面修改addPackages,增加cron 比如下面:
/* 注册拓展包 */
->addPackages(array(
....
SOTER_PACKAGES_PATH . 'cron',
...
))
#使用拓展 1.按照上面的说明安装Soter Cron拓展. 2.创建task文件,比如:application/classes/Task/TestTask.php 然后在TestTask.php里面写正常的Soter的task即可. 3.创建配置文件,添加task到Soter Cron服务里面 比如:application/config/development/task.php 输入如下配置:
return array(
'php_bin' => '/usr/bin/php', //php命令路径
'enable' => true, //是否启用(总开关)
'tasks' => array(
array(
'class' => 'TestTask', //task类名称不需要Task_前缀,还可以是task文件路径,比如:User/Score,就是类Task_User_Score.
'enable' => true, //是否启用task
'args' => '-f test -b demo --debug', //额外的传递给task的命令行参数
'pidfile' => '', //pid文件路径,留空会使用默认规则在storage下面生成pid文件
'cron' => '*/2 * * * * * *', //执行周期,六位写法,第一位是秒,后五位是标准的crontab五位写法;另外支持七位写法,最后一位是年
'log' => true, //是否记录日志
'log_path' => '/tmp/xxx.log', //日志文件路径
'log_size' => 2 * 1024* 1024, //日志最大大小,单位字节
),
)
);
cron表达式结构:
* * * * * * *
- - - - - - -
| | | | | | |
| | | | | | + 年 [optional]
| | | | | +----- 周的第几天 (0 - 7) (Sunday=0 or 7)
| | | | +---------- 月 (1 - 12)
| | | +--------------- 月的第几天 (1 - 31)
| | +-------------------- 小时 (0 - 23)
| +------------------------- 分钟 (0 - 59)
+------------------------------ 秒 (0 - 59)
3.启动服务SoterCron服务
执行命令:
php index.php --task=SoterCronService --evn=development 即可,如果没问题,可以后台执行这个命令.
那么Soter Cron会自动扫描"Soter包"配置目录下面当前环境文件夹里面的task.php文件
如果我们不想用task.php这个名字,可以通过-c 参数指定新的名字,比如:php index.php --task=SoterCronService -c mytask
那么Soter Cron会自动扫描"Soter包"配置目录下面当前环境文件夹里面的mytask.php文件
4.当文件task.php发生变化的时候Soter Cron会自动重新加载.
全部参数说明:
--task 计划任务服务名称,固定是SoterCronService
--evn 环境参数,可以是的velopment,testing,production,对应配置文件夹下面的子目录名称
-c task配置文件名称,默认是task.
--disable-application 设置了此参数那么就会禁用主项目的计划任务.
--hmvc-disable-all 设置了此参数那么就会禁用所有hmvc项目的计划任务.
--hmvc-enable 设置只启用这些hmvc项目的计划任务,值是hmvc项目的模块名称,多个用逗号分割.比如:Demo,User
--hmvc-disable 设置需要禁用的hmvc项目的计划任务,,值是hmvc项目的模块名称,多个用逗号分割.比如:Demo,User
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。