Skip to content

Oefenweb/cakephp-queue

Repository files navigation

Queue plugin for CakePHP

Build Status PHP 7 ready Coverage Status Packagist downloads Code Climate Scrutinizer Code Quality

Requirements

  • CakePHP 2.9.0 or greater.
  • PHP 7.0.0 or greater.

Installation

Clone/Copy the files in this directory into app/Plugin/Queue

Configuration

Ensure the plugin is loaded in app/Config/bootstrap.php by calling:

CakePlugin::load('Queue');

Ensure to configure the following lines in app/Config/bootstrap.php:

Configure::write('Queue.workers', 3);
Configure::write('Queue.sleepTime', 10);
Configure::write('Queue.gcprop', 10);
Configure::write('Queue.defaultWorkerTimeout', 2 * MINUTE);
Configure::write('Queue.defaultWorkerRetries', 4);
Configure::write('Queue.workerMaxRuntime', 0);
Configure::write('Queue.cleanupTimeout', DAY);
Configure::write('Queue.exitWhenNothingToDo', false);
Configure::write('Queue.gcOnExit', true);

Load schema:

Console/cake schema create;

Usage

Console

Run from your APP folder:

# Tries to call the `add()` function on a task.
Console/cake Queue.queue add <taskname>;
# Run a queue worker.
Console/cake Queue.queue runworker;
# Display some general statistics.
Console/cake Queue.queue stats;
# Manually call cleanup function to delete task data of completed tasks.
Console/cake Queue.queue clean;
# Manually call cleanup_failed function to delete task data of failed tasks.
Console/cake Queue.queue clean_failed;

Running only specific tasks per worker

You can filter "running" by type:

Console/cake Queue.queue runworker -t MyType,AnotherType,-ThisOneToo
Console/cake Queue.queue runworker -t "-ThisOneNot"

Use - prefix to exclude. Note that you might need to use "" around the value then to avoid it being seen as option key.

That can be helpful when migrating servers and you only want to execute certain ones on the new system or want to test specific servers.