我愿意用queue发送邮箱到邮箱地址列表.在不使用队列的情况下,我的代码工作正常,但在使用队列时,它显示以下错误:

Exception in Queue.php line 86: Serialization of 'Closure' is not allowed

    in /home/hizbul/Development/Projects/Laravel/fastskool/vendor/laravel/framework/src/Illuminate/Queue/Queue.php line 86
    at serialize(object(SendMessageToStudent)) in Queue.php line 86
    at Queue->createPayload(object(SendMessageToStudent), '') in DatabaseQueue.php line 81
    at DatabaseQueue->push(object(SendMessageToStudent)) in Dispatcher.php line 184
    at Dispatcher->pushCommandToQueue(object(DatabaseQueue), object(SendMessageToStudent)) in Dispatcher.php line 159
    at Dispatcher->dispatchToQueue(object(SendMessageToStudent)) in Dispatcher.php line 73
    at Dispatcher->dispatch(object(SendMessageToStudent)) in DispatchesJobs.php line 17
    at Controller->dispatch(object(SendMessageToStudent)) in MessageController.php line 49
    at MessageController->store(object(Request))
    at call_user_func_array(array(object(MessageController), 'store'), array(object(Request))) in Controller.php line 55
    at Controller->callAction('store', array(object(Request))) in ControllerDispatcher.php line 44
    at ControllerDispatcher->dispatch(object(Route), object(MessageController), 'store') in Route.php line 189
    at Route->runController() in Route.php line 144
    at Route->run(object(Request)) in Router.php line 653
    at Router->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 53
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StaffAndAdmin.php line 40
    at StaffAndAdmin->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ModuleManager.php line 29
    at ModuleManager->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SwitchDatabaseConnection.php line 36
    at SwitchDatabaseConnection->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SubstituteBindings.php line 41
    at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 65
    at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
    at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64
    at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
    at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
    at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
    at Pipeline->then(object(Closure)) in Router.php line 655
    at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 629
    at Router->dispatchToRoute(object(Request)) in Router.php line 607
    at Router->dispatch(object(Request)) in Kernel.php line 268
    at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 51
    at Debugbar->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
    at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
    at Pipeline->then(object(Closure)) in Kernel.php line 150
    at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
    at Kernel->handle(object(Request)) in index.php line 68

我使用database作为队列驱动器.

以下是我的队列作业(job)处理程序代码:

    class SendMessageToStudent implements ShouldQueue
{
    use InteractsWithQueue, Queueable, SerializesModels;

    private $data;

    /**
     * Create a new job instance.
     *
     * @param Request $request
     */
    public function __construct(Request $request)
    {
        $this->data = $request;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $student = $this->data;
        $arrStudent = (new Message())->getEmailAddressList($student);
        Mail::to($arrStudent)->send(new MessageSent($student));
    }
}

and dispatcher code:

$this->dispatch(new SendMessageToStudent($request));

我期待着一个可行的解决方案.

推荐答案

您不能序列化请求.只有Eloquent 的模型才能序列化和非序列化.看这里:https://laravel.com/docs/5.2/queues#writing-job-classes

You should use $request->all() instead of $request. Since Request is treated as closure.

Laravel相关问答推荐

无法在终端cPanel中打开输入文件:artisan

运行NPM Prod时出现VUE问题

Laravel本地化错误:"setlocale():参数#1($category)的类型必须是int,给定的是Illuminate\Http\Request"

如何在Laravel中创建自定义单项集合

工厂多对多数据透视表属性

验证判断请求的值是否存在于另一个表 Laravel 9 中

FileViewFinder.php 第 137 行中的 Laravel 5 InvalidArgumentException:未找到视图 [.admin]

RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException

laravel 关系集合上的自定义排序

在 apache docker 容器中运行虚拟主机

Blade引擎:打印三重花括号

在 Laravel Blade 中转义 vue.js 数据绑定语法?

带有消息...必须返回关系实例的 LogicException.

Laravel 5 迁移:Schema::table 方法中不同类型的默认长度

Laravel 4 - 如何将所有字段的所有验证错误消息作为 JSON struct 返回?

如何使用 Laravel 测试授权重定向?

如何在 Laravel 5 中的每个相关输入字段旁边显示验证错误?

Laravel 获取文件内容

Laravel 5 事件处理程序未触发

如何判断是否在laravel中使用了分页