队列
- 分发任务时报错
我的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()】后,再保存到变量里。