Bra*_*vic 5 jobs laravel laravel-queue laravel-jobs
我在这里遇到一个问题。样品将说明一切。
Queue::after(function (JobProcessed $event) {
$job_details = json_decode($event->job->getRawBody(), true);
)});
Run Code Online (Sandbox Code Playgroud)
这是$ job_details的样子:
'displayName' => 'App\\Jobs\\CommandJob',
'job' => 'Illuminate\\Queue\\CallQueuedHandler@call',
'maxTries' => 10,
'timeout' => NULL,
'data' =>
array (
'commandName' => 'App\\Jobs\\CommandJob',
'command' => 'O:19:"App\\Jobs\\CommandJob":9:{s:32:"' . "\0" . 'App\\Jobs\\CommandJob' . "\0" . 'commandName";N;s:30:"' . "\0" . 'App\\Jobs\\CommandJob' . "\0" . 'arguments";N;s:28:"' . "\0" . 'App\\Jobs\\CommandJob' . "\0" . 'command";s:20:"google:get-campaigns";s:5:"tries";i:10;s:32:"' . "\0" . 'App\\Jobs\\CommandJob' . "\0" . 'nextCommand";a:1:{i:0;s:19:"google:get-adgroups";}s:6:"' . "\0" . '*' . "\0" . 'job";N;s:10:"connection";N;s:5:"queue";s:11:"update_data";s:5:"delay";N;}',
Run Code Online (Sandbox Code Playgroud)
我想从$ job_details ['data'] ['command']中获取一些参数。有一些简单的方法可以做到这一点,还是我需要一些自制的灵魂?
$event->job->getRawBody返回一个字符串,这样您就不能写$job_details['data']['command'],最终会得到Illegal string offset error。
我正在使用Laravel 5.4,并且设法根据文档应用该方法来检索我的Job实例。$event->job->payload()unserialize
所以我所做的是:
$payload = $event->job->payload();
$myJob = unserialize($payload['data']['command']);
$myJob->getMyProperty();
//... Just work with $myJob as if it were your job class
Run Code Online (Sandbox Code Playgroud)
这是从serialize($value)$job_details["data"]["command"]生成的字符串。您可以对其进行反序列化($str)以创建由您的字符串表示的作业对象。然后,您将可以根据通常的可见性规则访问这些属性。
$job = unserialize($job_details["data"]["command"]);
dump($job->queue;) // "update_data"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2523 次 |
| 最近记录: |