0
我試圖實現一個Laravel 5隊列,它發送一個新的事件郵件到郵件列表。我發現你可以使用Command來做這件事,但每次我嘗試執行這個命令時,我都會得到一個錯誤異常(見下文)。我已經寫做郵件類是以下Laravel命令隊列異常
<?php namespace App\Commands;
use Illuminate\Support\Facades\App;
use \App\Event;
use Illuminate\Support\Facades\Mail;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldBeQueued;
class EventMailing extends Command implements SelfHandling, ShouldBeQueued {
use InteractsWithQueue, SerializesModels;
/**
* Create a new command instance.
*
* @return void
*/
public $event;
public $recipients;
public function __construct(Event $event, $recipients)
{
$this->event=$event;
$this->recipients=$recipients;
}
/**
* Execute the command.
*
* @return void
*/
public function handle(EventMailing $command, User $user)
{
$event = $command->event;
print_r($event);
/* foreach ($this->recipients as $recipient) {
Mail::send('emails.event', $event,
function($message) use ($event,$recipient)
{
$message->from('[email protected]', 'GSE BeLux');
$message->subject('New event: '.$event->name);
$message->to($recipient);
}
);
}*/
}
}
注:我註釋掉的郵件部分來檢查,如果不是那部分是不正常。
從控制器我稱之爲EventMailing命令是這樣的:
public function sendMail($event,$array)
{
Queue::push(new EventMailing($event,$array));
}
當我觸發這個功能,我做了PHP的工匠隊列:工作--verbose 我得到這個。任何人都可以幫我解決這個問題嗎?
[ErrorException]
unserialize(): Function spl_autoload_call() hasn't defined the class it was called for
Exception trace:
() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:36
Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n/a
unserialize() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php:36
Illuminate\Queue\CallQueuedHandler->call() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php:126
Illuminate\Queue\Jobs\Job->resolveAndFire() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php:51
Illuminate\Queue\Jobs\BeanstalkdJob->fire() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:207
Illuminate\Queue\Worker->process() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:159
Illuminate\Queue\Worker->pop() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php:107
Illuminate\Queue\Console\WorkCommand->runWorker() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php:67
Illuminate\Queue\Console\WorkCommand->fire() at n/a:n/a
call_user_func_array() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/Container.php:523
Illuminate\Container\Container->call() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php:115
Illuminate\Console\Command->execute() at /home/vagrant/Code/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:253
Symfony\Component\Console\Command\Command->run() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php:101
Illuminate\Console\Command->run() at /home/vagrant/Code/vendor/symfony/console/Symfony/Component/Console/Application.php:874
Symfony\Component\Console\Application->doRunCommand() at /home/vagrant/Code/vendor/symfony/console/Symfony/Component/Console/Application.php:195
Symfony\Component\Console\Application->doRun() at /home/vagrant/Code/vendor/symfony/console/Symfony/Component/Console/Application.php:126
Symfony\Component\Console\Application->run() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:90
Illuminate\Foundation\Console\Kernel->handle() at /home/vagrant/Code/artisan:36
你曾經能夠解決這個問題?我正在處理同樣的錯誤 - 即使是最簡單的命令 – NightMICU 2015-04-03 19:51:47
也沒有真正用這種方法解決。以舊的方式,並創建了一個隊列「EventMailing」,並從控制器上推送我的作業。在隊列類中,我創建了一個處理郵件作業的「fire」方法。如果更多的人爲此付出努力,我會在我的網站上發佈一篇博文,請問我。 – jelledb 2015-04-07 07:16:42