如何从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。
答案 0 :(得分:0)
您可以调用$this->release()
方法的原因是因为该方法通过特征ProcessConversion
(InteractsWithQueue
添加到您的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()
?