【发布时间】:2015-09-08 10:27:58
【问题描述】:
我想在我的控制器中对函数的一部分进行排队,主要是因为它访问第 3 方 API 并从所述请求中计算某些信息。我也想这样做来增加我对队列的了解!
我要排队的代码是:
唯一需要使用此if statement 推送的变量是$postcode 和$clinic ID(在语句上方已确定)。
if($clinic->postcode != $postcode)
{
$client = new Client([ 'base_uri' => 'https://api.postcodes.io/','timeout' => 2.0, 'verify' => false ]);
$response = $client->get('postcodes/'.$postcode)->getBody();
$input = json_decode($response);
$clinic->latitude = $input->result->latitude;
$clinic->longitude = $input->result->longitude;
$clinic->save();
}
到目前为止,我已经创建了queue 表并进行了迁移。
然后我运行命令:php artisan make:job GetClinicLatAndLongPoints --queued
我的问题是,我怎样才能把这个函数放在GetClinicLatAndLongPoints 中,包括传递两个变量来这样做?
到目前为止:
public function handle(Clinic $clinic, $postcode)
{
}
但我不确定如何布置!任何指导将不胜感激。
【问题讨论】:
-
你使用的是什么版本的 laravel,你都标记了!大声笑
-
糟糕,对不起!我已经删除了 Laravel 4。我正在使用最新的 Laravel 5.1.*!
-
您是否尝试将其复制粘贴到您的句柄函数中?还要确保您的队列正在运行 (
php artisan queue:listen) -
是的,但我不确定如何传递必要的变量以使
if statement正常工作。 -
我认为 L5 支持 Eloquent Model 实例的对象序列化。只需发送模型,看看会发生什么;)
标签: php laravel laravel-5 task-queue