elstc/cakephp-cron-jobs

A cron job runner for CakePHP

Installs: 5 258

Dependents: 0

Suggesters: 0

Security: 0

Stars: 8

Watchers: 2

Forks: 0

Open Issues: 0

Type:cakephp-plugin

v3.0.0 2024-05-01 09:28 UTC

This package is auto-updated.

Last update: 2025-03-29 01:01:02 UTC


README

Software License Build Status Codecov Latest Stable Version

This plugin is simple wrapper crunzphp/crunz.

Version Map

CakePHP Version Plugin Version Branch
5.x 3.x cake5
4.x 2.x cake4
3.x 0.3.x cake3

Installation

You can install this plugin into your CakePHP application using composer.

The recommended way to install composer packages is:

composer require elstc/cakephp-cron-jobs

Load plugin

Load the plugin by adding the following statement in your project's src/Application.php:

$this->addPlugin('Elastic/CronJobs');

Generate config file

Run bin/cake CronJobs publish:config command. The command generate crunz.yml in the project ROOT directory.

You can configure with crunz.yml, see also https://github.com/crunzphp/crunz#configuration

I recommend changing source: to:

source: vendor/elstc/cakephp-cron-jobs/tasks

This makes it unnecessary to specify a directory when using schedule:run and schedule:list command.

Register to cron

add your cron schedule, use crontab -e

* * * * * cd {YOUR-APP-DIR}; bin/cake CronJobs schedule:run vendor/elstc/cakephp-cron-jobs/tasks/

Usage

You can register a schedule job from the CakePHP event system.

Register to job schduler in bootstrap_cli.php, using cakephp event system:

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 is \Crunz\Schedule wrapper class. See also: crunzphp/crunz README

Show scheduled jobs

bin/cake CronJobs schedule:list vendor/elstc/cakephp-cron-jobs/tasks/

Upgrade from CakePHP 3

larvery/crunz updated from 1.12 to 2.x(<= PHP 7.3), 3.x(>= PHP 7.4), See also crunz's Upgrade Guide.

crunz/UPGRADE.md at master ยท crunzphp/crunz