【发布时间】:2016-03-02 15:38:15
【问题描述】:
在控制器中:
$smsData = [
'number' => $customer->phone,
'message' => 'Test',
];
$job = (new SendMessage($smsData))->delay(env('DELAY_QUEUE'))->onQueue(env('SMS_QUEUE'));
$this->dispatch($job);
SendMessage 类:
<?php
namespace App\Jobs;
use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
//use Guzzle\Http\Client;
class SendMessage extends Job implements ShouldQueue {
protected $data, $url;
use InteractsWithQueue, SerializesModels;
public function __construct(array $data) {
$this->data = $data;
$this->url = 'https://reguler.zenziva.net/apps/smsapi.php?userkey=' . env('ZENZIVA_USERKEY') . '&passkey=' . env('ZENZIVA_PASSKEY');
}
public function handle() {
$client = new \GuzzleHttp\Client();
$smsData = $this->data;
$res = $client->request('GET', $this->url . '&nohp=' . $smsData['number'] . '&pesan=' . $smsData['message']);
if ($res->getStatusCode() !== 200) { \Log::info($res->getBody()); }
$this->delete();
return \Response::json(['type' => 'success'], 200);
}
}
SMS 确实通过了,但队列并未从 Iron 中移除(因此发送多条相同的 SMS,返回 NO RESPONSE CODE ATALL)。
奇怪的是,如果我跳过 guzzle 请求,队列会从 Iron 中移除,因此 POST 返回响应 200。
知道如何解决这个问题吗?
【问题讨论】:
-
确定您的代码没有遇到致命错误,阻止它到达您删除队列作业的行吗?可能想尝试/抓住。或者在删除时添加调试日志,以便确认它运行。
-
@jszobody 已经这样做了,没有日志,没有错误,短信确实通过了
标签: php queue laravel-5.2 iron.io