elstc / cakephp-cron-jobs
CakePHP 的定时任务运行器
v3.0.0
2024-05-01 09:28 UTC
Requires
- php: >=8.1
- cakephp/cakephp: ^5.0
- crunzphp/crunz: ^3.6
Requires (Dev)
- cakephp/cakephp-codesniffer: ^5.0
- phpunit/phpunit: ^10.1
README
此插件是简单的包装 crunzphp/crunz。
版本映射
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方法是
composer require elstc/cakephp-cron-jobs
加载插件
通过在您的项目的 src/Application.php
文件中添加以下语句来加载插件:
$this->addPlugin('Elastic/CronJobs');
生成配置文件
运行 bin/cake CronJobs publish:config
命令。该命令将在项目的 ROOT
目录中生成 crunz.yml
。
您可以使用 crunz.yml
进行配置,也请参阅 https://github.com/crunzphp/crunz#configuration
我建议将 source:
更改为
source: vendor/elstc/cakephp-cron-jobs/tasks
这使得在使用 schedule:run
和 schedule:list
命令时无需指定目录。
注册到 cron
添加您的 cron 调度,使用 crontab -e
* * * * * cd {YOUR-APP-DIR}; bin/cake CronJobs schedule:run vendor/elstc/cakephp-cron-jobs/tasks/
用法
您可以从 CakePHP 事件系统中注册一个调度任务。
在 bootstrap_cli.php 中注册到作业调度器,使用 cakephp 事件系统
use Cake\Event\Event; use Cake\Event\EventManager; EventManager::instance()->on('CronJobs.buildSchedule', static function (Event $event) { /** @type \Elastic\CronJobs\Schedule\CakeSchedule $schedule */ $schedule = $event->getSubject(); // Add scheduled command $schedule->run('touch tmp/crunz-time-from-event') ->description('your job description') ->everyDay() ->at('09:00'); // Add scheduled cake's command // such as `bin/cake your_command comannd_arg1 --command-option --some-opt=value` $schedule->runCommand('your_command', [ 'comannd_arg1', '--command-option', '--some-opt' => 'value', ]) ->description('your job description') ->cron('0 3 * * *'); });
\Elastic\CronJobs\Schedule\CakeSchedule
是 \Crunz\Schedule
包装类。也请参阅:crunzphp/crunz README
显示已计划的任务
bin/cake CronJobs schedule:list vendor/elstc/cakephp-cron-jobs/tasks/
从 CakePHP 3 升级
larvery/crunz 已从 1.12 升级到 2.x(<= PHP 7.3),3.x(>= PHP 7.4),也请参阅 crunz 的升级指南。