/** * Schedule all of the delayed jobs for a given timestamp. * * Searches for all items for a given timestamp, pulls them off the list of * delayed jobs and pushes them across to Resque. * * @param DateTime|int $timestamp * Search for any items up to this timestamp to schedule. */ public function enqueueDelayedItemsForTimestamp($timestamp) { $item = null; while ($item = ResqueScheduler::nextItemForTimestamp($timestamp)) { $this->log('queueing ' . $item['class'] . ' in ' . $item['queue'] . ' [delayed]'); Resque_Event::trigger('beforeDelayedEnqueue', array('queue' => $item['queue'], 'class' => $item['class'], 'args' => $item['args'])); $payload = array_merge(array($item['queue'], $item['class']), $item['args']); // call_user_func_array('Resque::enqueue', $payload); call_user_func_array(array(new Resque(), 'enqueue'), $payload); } }
public static function afterRetry($payload, $enqueuedAt) { $enqueuedAt = ResqueScheduler::getTimestamp($enqueuedAt); ResqueUtil::log('[afterRetry]Failed job ' . CJSON::encode($payload) . 'is enqueued again at ' . $enqueuedAt); }
/** * Get delayed defailed information of jobs * * @return array JSON format job information list */ public function getDelayedJobs() { $timestamps = Resque::redis()->zrange('delayed_queue_schedule', 0, -1); $jobs = array(); foreach ($timestamps as $timestamp) { $jobs = array_merge($jobs, ResqueScheduler::getDelayedTimestampJobs($timestamp)); } return $jobs; }