mirror of
https://github.com/idanoo/php-resque
synced 2025-06-30 21:22:20 +00:00
add beforeEnqueue hook that allows the enqueue to be cancelled
This commit is contained in:
parent
c335bc3555
commit
a95c24b32e
5 changed files with 106 additions and 29 deletions
|
@ -201,17 +201,24 @@ class Resque
|
|||
*/
|
||||
public static function enqueue($queue, $class, $args = null, $trackStatus = false)
|
||||
{
|
||||
$result = Resque_Job::create($queue, $class, $args, $trackStatus);
|
||||
if ($result) {
|
||||
Resque_Event::trigger('afterEnqueue', array(
|
||||
'class' => $class,
|
||||
'args' => $args,
|
||||
'queue' => $queue,
|
||||
'id' => $result,
|
||||
));
|
||||
$id = Resque::generateJobId();
|
||||
$hookParams = array(
|
||||
'class' => $class,
|
||||
'args' => $args,
|
||||
'queue' => $queue,
|
||||
'id' => $id,
|
||||
);
|
||||
try {
|
||||
Resque_Event::trigger('beforeEnqueue', $hookParams);
|
||||
}
|
||||
catch(Resque_Job_DontCreate $e) {
|
||||
return $id;
|
||||
}
|
||||
|
||||
return $result;
|
||||
Resque_Job::create($queue, $class, $args, $trackStatus, $id);
|
||||
Resque_Event::trigger('afterEnqueue', $hookParams);
|
||||
|
||||
return $id;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -341,5 +348,15 @@ class Resque
|
|||
$result = self::redis()->del('queue:' . $queue);
|
||||
return ($result == 1) ? $counter : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Generate an identifier to attach to a job for status tracking.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function generateJobId()
|
||||
{
|
||||
return md5(uniqid('', true));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,14 +50,17 @@ class Resque_Job
|
|||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function create($queue, $class, $args = null, $monitor = false)
|
||||
public static function create($queue, $class, $args = null, $monitor = false, $id = null)
|
||||
{
|
||||
if (is_null($id)) {
|
||||
$id = Resque::generateJobId();
|
||||
}
|
||||
|
||||
if($args !== null && !is_array($args)) {
|
||||
throw new InvalidArgumentException(
|
||||
'Supplied $args must be an array.'
|
||||
);
|
||||
}
|
||||
$id = md5(uniqid('', true));
|
||||
Resque::push($queue, array(
|
||||
'class' => $class,
|
||||
'args' => array($args),
|
||||
|
|
12
lib/Resque/Job/DontCreate.php
Normal file
12
lib/Resque/Job/DontCreate.php
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
/**
|
||||
* Exception to be thrown if while enqueuing a job it should not be created.
|
||||
*
|
||||
* @package Resque/Job
|
||||
* @author Chris Boulton <chris@bigcommerce.com>
|
||||
* @license http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
class Resque_Job_DontCreate extends Exception
|
||||
{
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue