访问Laravel Queued Job的有效负载数据

时间:2017-05-04 13:59:36

标签: php laravel laravel-5

如何从Laravel作业类中访问有效负载?

我试过了:

<?php

namespace App\Jobs;

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

use App\PDF;

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

    protected $pdf;

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

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {

        $payload = $this->payload(); //undefined method
        $payload = $this->payload; //undefined property
        $payload = json_decode($this->getRawBody(), true); //undefined method

        ....

我从Job课程中得到了这些。但payload()getRawBody()都返回Call to undefined method

其他方法from that class do work - 例如$this->release(1),所以我不确定$this是否确实引用了实际的工作类。

我正在使用Redis队列驱动程序,使用Laravel 5.4。

2 个答案:

答案 0 :(得分:0)

您可以调用$this->release()方法的原因是因为该方法通过特征ProcessConversionInteractsWithQueue添加到您的Job类中{3}})

您可以让您的课程扩展抽象的float texelSizeX = 1.0 / uPerCloudBufferWidth; float texelSizeY = 1.0 / uPerCloudBufferHeight; vec2 perMotifUV = vec2( mod(cellIndex, uPerCloudBufferWidth)*texelSizeX, floor(cellIndex / uPerCloudBufferHeight)*texelSizeY ); perCloudUV += vec2(0.5*texelSizeX, 0.5*texelSizeY); 课程(https://github.com/laravel/framework/blob/5.4/src/Illuminate/Queue/InteractsWithQueue.php#L57),可能会让您访问您希望使用的那些方法,但是,我无法找到任何相关文件。

答案 1 :(得分:0)

您是否尝试使用$payload = $this->job->payload()