laravel 小结

队列

  • 分发任务时报错
    我的JOB:
<?php

namespace App\Jobs;

use Illuminate\Support\Carbon;
use Illuminate\Http\Request;
use App\Models\PosDeviceIn;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

/**
 *
 * 任务分发格式 :PosDeviceInJob::dispatch(Request)->onQueue('batchdevicein');
 */
class PosDeviceInJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable;//, SerializesModels;

    ## 任务最大尝试次数。
    public $tries = 5;

    ## 任务运行的超时时间。
    public $timeout = 120;

    protected $request;

    /**
     * Create a new job instance.
     *
     * @param [obj] $[request] 
     * 
     * @return void
     */
    public function __construct(Request $request)
    {
        $this->request = $request;
        // $this->request = [
        //     'tusn_start' => $request->tusn_start,
        //     'tusn_end'   => $request->tusn_end,
        // ];
    }
    ……
    ……
    如上,我没有传Model,我传了请求类。

报错:


exception: "Exception"
file: "/www/web/laravel/datang/vendor/laravel/framework/src/Illuminate/Queue/Queue.php" line 128
message: "Serialization of 'Closure' is not allowed"

解决:JOB的构造函数里,不要存储任何未序列化的对象(当然model除外)。可以存储一些数组或字符串之类的,如上的注释掉的代码。

要不,你自己把自己传的对象给序列化了 【serialize()】后,再保存到变量里。

阅读更多
文章标签: laravel 队列 报错
个人分类: 报错
上一篇linux日常小结
下一篇docker+lnmp 报错小结,以laradock为例,其它同理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭