/** * Resque_EventHandler class perferm the default behavior for events. * * @package system\resque\components * @author Vincent.Hou <*****@*****.**> * */ Resque_Event::listen('afterEnqueue', array('Resque_EmailEventHandler', 'afterEnqueue')); Resque_Event::listen('beforePerform', array('Resque_EmailEventHandler', 'beforePerform')); Resque_Event::listen('afterPerform', array('Resque_EmailEventHandler', 'afterPerform')); Resque_Event::listen('beforeFirstFork', array('Resque_EmailEventHandler', 'beforeFirstFork')); Resque_Event::listen('beforeFork', array('Resque_EmailEventHandler', 'beforeFork')); Resque_Event::listen('afterFork', array('Resque_EmailEventHandler', 'afterFork')); Resque_Event::listen('onFailure', array('Resque_EmailEventHandler', 'onFailure')); Resque_Event::listen('afterSchedule', array('Resque_EmailEventHandler', 'afterSchedule')); Resque_Event::listen('afterRetry', array('Resque_EmailEventHandler', 'afterRetry')); class Resque_EmailEventHandler { public static function afterEnqueue($class, $args, $queue) { ResqueUtil::log('[afterEnqueue]Job class ' . $class . ' enqueued ' . $queue . ' queue with arguments:' . CJSON::encode($args)); } public static function beforePerform($job) { ResqueUtil::log('[beforePerform]Begin to perform job ' . $job); } public static function afterPerform($job) { ResqueUtil::log('[afterPerform]Just performed job ' . $job); } public static function beforeFirstFork($worker)
<?php namespace backend\modules\resque\components\lib\Resque; use backend\modules\resque\components\ResqueUtil; require_once dirname(__FILE__) . '/../Resque.php'; require_once dirname(__FILE__) . '/Worker.php'; Resque_Event::listen('afterEnqueue', array('Resque_Scaler', 'afterEnqueue')); Resque_Event::listen('beforeFork', array('Resque_Scaler', 'beforeFork')); class Resque_Scaler { // define how many jobs require how many workers. public static $SCALE_SETTING = array(15 => 2, 25 => 3, 40 => 4, 60 => 5); public static function afterEnqueue($class, $arguments, $queue) { ResqueUtil::log("Job was queued for " . $class . ".\n"); if (self::check_need_worker($queue)) { ResqueUtil::log("we need more workers\n"); self::add_worker($queue); } else { ResqueUtil::log("workers is enough.\n"); } } public static function beforeFork($job) { ResqueUtil::log("Just about to perform " . $job . "\n"); if (self::check_kill_worker($job->queue)) { ResqueUtil::log("too many workers...kill this one.\n"); // NOTE: tried to kill with $worker->shutdown but it's not working. use kill to send SIGQUIT instead. $server_workers = self::server_workers(self::get_all_workers($job->queue)); $current_workers = $server_workers[self::get_hostname()];
* @author Vincent.Hou <*****@*****.**> */ /** * Resque_EventHandler class perferm the default behavior for events. * * @package system\resque\components * @author Vincent.Hou <*****@*****.**> * */ // Resque_Event::listen('afterEnqueue', array('Resque_EventHandler', 'afterEnqueue')); // Resque_Event::listen('beforePerform', array('Resque_EventHandler', 'beforePerform')); // Resque_Event::listen('afterPerform', array('Resque_EventHandler', 'afterPerform')); // Resque_Event::listen('beforeFirstFork', array('Resque_EventHandler', 'beforeFirstFork')); // Resque_Event::listen('beforeFork', array('Resque_EventHandler', 'beforeFork')); // Resque_Event::listen('afterFork', array('Resque_EventHandler', 'afterFork')); Resque_Event::listen('onFailure', array('Resque_EventHandler', 'onFailure')); // Resque_Event::listen('afterSchedule', array('Resque_EventHandler', 'afterSchedule')); // Resque_Event::listen('afterRetry', array('Resque_EventHandler', 'afterRetry')); class Resque_EventHandler { public static function afterEnqueue($class, $args, $queue) { ResqueUtil::log('[afterEnqueue]Job class ' . $class . ' enqueued ' . $queue . ' queue with arguments:' . CJSON::encode($args)); } public static function beforePerform($job) { ResqueUtil::log('[beforePerform]Begin to perform job ' . $job); } public static function afterPerform($job) { ResqueUtil::log('[afterPerform]Just performed job ' . $job);
/** * Listen on the pre-defined event * * This makes it possible to listen on the event triggered on runtime, * and execute the callback function passed in when the event is triggered. * The supported events can be found in the project wiki * * @param string $event * Name of event to listen on. * @param mixed $callback * Any callback callable by call_user_func_array. */ public function listen($event, $callback) { Resque_Event::listen($event, $callback); }