我在laravel中间件里写了下面一行代码:

1
2
3
4
5
6
$response = $next($request)->cookie($clientKey, $client->id, 100 * 60 * 24 * 365);

#或者
\Cookie::queue($clientKey, $client->id, $ttl);

dump($client->id);

然后再中间件里,dump 一个变量,导致cookie不能设置上去,事后发现中间件里不能有任何输出,比如:echo,dump,var_dump,print_r 否则都会导致不成功

Laravel Jobs 不消费和消费失败问题(DB 是 mongodb)

创建了一个AccessLogJob死活不会执行,终端也不抛异常,经过排查最终发现是,在DBmongodb库的情况下 SerializesModels 压根不会触发,也就是会导致model实例不会被序列化,临时解决方案注入时手动序列化serialize,使用时反序列化unserialize

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class AccessLogJob implements ShouldQueue
{
    use InteractsWithQueue, Queueable, SerializesModels;

    /**
     * @var AccessLog
     */
    protected $accessLog;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(AccessLog $log)
    {
        $this->accessLog = serialize($log);
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        (unserialize($this->accessLog))->save();
    }
}