uniondrug/crontab
Composer 安装命令:
composer require uniondrug/crontab
包简介
Uniondrug Crontab Component for uniondrug/framework
README 文档
README
定时任务工具
安装
$ cd project-home
$ composer require uniondrug/crontab
修改 app.php 配置文件,注入服务。服务名称 crontabService。
<?php return [ 'default' => [ ...... 'providers' => [ ...... \Uniondrug\Crontab\CrontabServiceProvider::class, ], ], ];
修改server.php配置文件,启动两个进程:
<?php return [ 'default' => [ 'host' => 'http://0.0.0.0:8000', 'class' => \Uniondrug\Server\Servitization\Server\HTTPServer::class, 'options' => [ 'pid_file' => __DIR__ . '/../tmp/pid/server.pid', 'worker_num' => 8, 'task_worker_num' => 2, ], 'autoreload' => true, 'processes' => [ \Uniondrug\Crontab\Processes\ManagerProcess::class, // 增加Crontab管理进程 \Uniondrug\Crontab\Processes\ExecProcess::class, // 增加Crontab运行进程 ], ...... ],
配置
Crontab的配置文件是 crontab.php, 主要有如下参数:
<?php /** * crontab.php Crontab的运行时配置 * * workerCount 启动的任务工作进程数量 * workerMaxTask 每个工作进程处理的任务上限,处理到这个数量后,自动重启 * */ return [ 'default' => [ 'workerCount' => 4, 'workerMaxTask' => 10, ], ];
使用
Crontab 通过注解定义定时任务。需要定时运行的任务,需要在app/Tasks中创建,并且继承 Uniondrug\Server\Task\TaskHandler,举例如下:
<?php /** * TestTask.php * */ namespace App\Tasks; use Uniondrug\Server\Task\TaskHandler; /** * Class TestTask * * @package App\Tasks * @Schedule(cron="* * * * *", second="*", times=60, start="2018-03-08 21:01:00") */ class TestTask extends TaskHandler { private static $i = 0; public function handle($data = []) { self::$i ++; console()->debug(__CLASS__ . " called " . self::$i); //sleep(40); } }
注解说明:
-
注解名称
@Schedule -
参数设置:
- cron 必填。Linux的Crontab格式定义。支持到分钟。
- second 可选。指定运行的秒。通过这个参数,可以精确到秒来运行任务。默认是 0。支持的格式包括:
- "*" 每秒
- "1,4,6" 指定的秒
- "1-10" 指定的连续秒
- times int 可选。重复运行的次数,执行过这个次数之后,就不再运行。默认不限制,无限循环。
- start datetime 可选。指定从具体的时间之后开始定时执行。默认从当前开始。如果指定日期,则从当日 00:00:00 开始
- until datetime 可选。指定到具体的时间之后停止循环。默认不停止。如果指定到日期,则到当日 23:59:59 结束
-
cron 格式说明:
1 2 3 4 5
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +----- month (1 - 12)
| | +------- day of month (1 - 31)
| +--------- hour (0 - 23)
+----------- min (0 - 59)
特别说明:
由于在PHP代码中,*/ 是注释的结束标记,所以 crontab 表达式的 */5 无法使用,模块可以在表达式中使用 # 代替 *。比如:#/5 # # # # 这样也是可以的。
日志
Crontab的运行日志在log/corntab目录中。
uniondrug/crontab 适用场景与选型建议
uniondrug/crontab 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 317 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 03 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「crontab」 「phalcon」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 uniondrug/crontab 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 uniondrug/crontab 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 uniondrug/crontab 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Provides a possibility to auto-setup crontabs required for project based on configuration file.
symfony bundle for jobbyphp/jobby
Yii2 scheduler module
Uniondrug Trace Client Component for uniondrug/framework
Schedule plugin for CraftCMS
Библиотека для работы с BigQuery
统计信息
- 总下载量: 317
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: proprietary
- 更新时间: 2018-03-09