2010-04-18 13:58:43 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Redis backend for storing failed Resque jobs.
|
|
|
|
*
|
2018-05-25 07:26:54 +00:00
|
|
|
* @package Resque/Failure
|
|
|
|
* @author Chris Boulton <chris@bigcommerce.com>
|
|
|
|
* @license http://www.opensource.org/licenses/mit-license.php
|
2010-04-18 13:58:43 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
class Resque_Failure_Redis implements Resque_Failure_Interface
|
|
|
|
{
|
2018-05-25 07:26:54 +00:00
|
|
|
/**
|
|
|
|
* Initialize a failed job class and save it (where appropriate).
|
|
|
|
*
|
|
|
|
* @param object $payload Object containing details of the failed job.
|
|
|
|
* @param object $exception Instance of the exception that was thrown by the failed job.
|
|
|
|
* @param object $worker Instance of Resque_Worker that received the job.
|
|
|
|
* @param string $queue The name of the queue the job was fetched from.
|
2018-06-22 08:13:16 +00:00
|
|
|
* @throws Resque_RedisException
|
2018-05-25 07:26:54 +00:00
|
|
|
*/
|
|
|
|
public function __construct($payload, $exception, $worker, $queue)
|
|
|
|
{
|
|
|
|
$data = new stdClass;
|
|
|
|
$data->failed_at = strftime('%a %b %d %H:%M:%S %Z %Y');
|
|
|
|
$data->payload = $payload;
|
|
|
|
$data->exception = get_class($exception);
|
|
|
|
$data->error = $exception->getMessage();
|
|
|
|
$data->backtrace = explode("\n", $exception->getTraceAsString());
|
|
|
|
$data->worker = (string)$worker;
|
|
|
|
$data->queue = $queue;
|
|
|
|
$data = json_encode($data);
|
|
|
|
Resque::redis()->rpush('failed', $data);
|
|
|
|
}
|
2010-04-18 13:58:43 +00:00
|
|
|
}
|