1 Star 2 Fork 0

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

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

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

The MIT License (MIT) Copyright (c) 2017 狂奔的蜗牛. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Soter计划任务服务拓展 展开 收起
PHP
MIT
取消

发行版 (2)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
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

搜索帮助