I don't suppose you'd be up to implementing Predis::transaction(), or do you know of a way around this? It's shorthand for MULTI/EXEC. I'm using redis for my queues. Below is from Illuminate/Queue/RedisQueue.php around ln 178.
public function migrateExpiredJobs($from, $to)
{
$options = ['cas' => true, 'watch' => $from, 'retry' => 10];
$this->getConnection()->transaction($options, function ($transaction) use ($from, $to)
{
// First we need to get all of jobs that have expired based on the current time
// so that we can push them onto the main queue. After we get them we simply
// remove them from this "delay" queues. All of this within a transaction.
$jobs = $this->getExpiredJobs(
$transaction, $from, $time = $this->getTime()
);
// If we actually found any jobs, we will remove them from the old queue and we
// will insert them onto the new (ready) "queue". This means they will stand
// ready to be processed by the queue worker whenever their turn comes up.
if (count($jobs) > 0)
{
$this->removeExpiredJobs($transaction, $from, $time);
$this->pushExpiredJobsOntoNewQueue($transaction, $to, $jobs);
}
});
}
I don't suppose you'd be up to implementing Predis::transaction(), or do you know of a way around this? It's shorthand for MULTI/EXEC. I'm using redis for my queues. Below is from Illuminate/Queue/RedisQueue.php around ln 178.