2015-04-03 2 views
2

UPDATE - Это было сужено до beanstalkd, sync работыLaravel 5 - Команды Queued метания spl_autoload_call (ошибка)

Я получаю следующее сообщение об ошибке при попытке запуска очереди команд в моей производственной среде:

exception 'ErrorException' with message 'unserialize(): Function spl_autoload_call() hasn't defined the class it was called for' 
in /home/forge/default/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:74 

Я пробовал как beanstalkd, так и драйверы базы данных, без изменений. Для простоты, я использую следующую команду:

<?php namespace App\Commands; 

use App\Commands\Command; 

use App\User; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Bus\SelfHandling; 
use Illuminate\Contracts\Queue\ShouldBeQueued; 

class TestQueueCommand extends Command implements SelfHandling, ShouldBeQueued { 

    use InteractsWithQueue, SerializesModels; 
    /** 
    * @var User 
    */ 
    private $user; 

    /** 
    * Create a new command instance. 
    * 
    * @param User $user 
    */ 
    public function __construct(User $user) 
    { 
     // 
     $this->user = $user; 
    } 

    /** 
    * Execute the command. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     \Log::info("You gave me " . $this->user->fullName()); 
    } 

} 

код диспетчерский:

get('queue-test', function() 
{ 
    Bus::dispatch(new TestQueueCommand(User::first())); 
}); 

Это работает в моей среде Homestead, терпит неудачу в производстве (Digital Ocean, Forge). У меня несколько рабочих beanstalkd, и я попытался перезапустить их. Я также запустил php artisan queue:flush.

Вот код, где ошибка происходит (от источника):

/** 
    * Handle the queued job. 
    * 
    * @param \Illuminate\Contracts\Queue\Job $job 
    * @param array $data 
    * @return void 
    */ 
    public function call(Job $job, array $data) 
    { 
     $command = $this->setJobInstanceIfNecessary(
      $job, unserialize($data['command']) 
     ); 

     $this->dispatcher->dispatchNow($command, function($handler) use ($job) 
     { 
      $this->setJobInstanceIfNecessary($job, $handler); 
     }); 

     if (! $job->isDeletedOrReleased()) 
     { 
      $job->delete(); 
     } 
    } 
+0

Никто? Решение на данный момент: iron.io:/ – NightMICU

ответ

Смежные вопросы