1 Star 2 Fork 0

狂奔的蜗牛. / soter-extension-cron

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.33 KB
一键复制 编辑 原始数据 按行查看 历史
arraykeys@gmail.com 提交于 2017-03-27 17:37 . No commit message

#拓展开发背景
在项目稍微复杂一些的项目当中,真个项目可能是多个语言配合完成不同的模块,其中计划任务是一种最常见的需求
平时大部分初级的做法就是利用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

PHP
1
https://gitee.com/snail/soter-extension-cron.git
git@gitee.com:snail/soter-extension-cron.git
snail
soter-extension-cron
soter-extension-cron
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891