vetruvet / laravel-phpredis

Use phpredis as the redis connection in Laravel
Apache License 2.0
43 stars 9 forks source link

Laravel 4.2 queue error: Call to undefined method Redis::transaction() #16

Open asdf072 opened 6 years ago

asdf072 commented 6 years ago

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);
        }
    });
}