elstc/cakephp-cron-jobs

A cron job runner for CakePHP

Installs: 4 598

Dependents: 0

Suggesters: 0

Security: 0

Stars: 8

Watchers: 3

Forks: 0

Open Issues: 0

Type:cakephp-plugin

v2.0.0 2022-12-02 04:23 UTC

This package is auto-updated.

Last update: 2024-03-10 11:31:46 UTC


README

Software License Build Status Codecov Latest Stable Version

This plugin is simple wrapper lavary/crunz.

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/lavary/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: lavary/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 · lavary/crunz