Laravel 监听事件 出现重复 运行
代码如下:
LoginOutEvent::class => [
PushNotification::class,
],
public function handle(LoginOutEvent $event)
{
// 本地环境默认不推送
if (app()->environment('local')) {
.og::info('jpush本地默认不推送local');
return;
}
// 从事件对象中取出对应的用户
$user = $event->getUser();
$params = [
'platform' => $user->cl_device_platform,
'title' => config('jpush.title'),
'content' => config('jpush.content'),
'alias' => $user->cl_user_id,
];
$this->jpushService->androidOrIosPushByAlias($params);
}
客户端收到两次推送
2019-12-16 21:32:07] production.INFO: 推送返回 by alias {"response":{"body":{"sendno":"263262494","msg_id":"20266240192777082"},"http_code":200,"headers":{"0":"HTTP/1.1 200 OK","Server":"nginx","Date":"Mon, 16 Dec 2019 13:32:07 GMT","Content-Type":"application/json","Content-Length":"51","Connection":"keep-alive","X-Rate-Limit-Limit":"4800","X-Rate-Limit-Remaining":"4794","X-Rate-Limit-Reset":"37","X-Jpush-Timestamp":"1576503127621"}},"type":1,"platform":"ios","alias":"w9g4c2mKG4VGh842OCW7iVo","registrationId":null,"title":"下线通知","content":"意外下线,如不是您本人操作,请重新登
录"}
[2019-12-16 21:33:07] production.INFO: 推送返回 by alias {"response":{"body":{"sendno":"495219281","msg_id":"54043232225973934"},"http_code":200,"headers":{"0":"HTTP/1.1 200 OK","Server":"nginx","Date":"Mon, 16 Dec 2019 13:33:07 GMT","Content-Type":"application/json","Content-Length":"51","Connection":"keep-alive","X-Rate-Limit-Limit":"4800","X-Rate-Limit-Remaining":"4795","X-Rate-Limit-Reset":"38","X-Jpush-Timestamp":"1576503187804"}},"type":1,"platform":"ios","alias":"w9g4c2mKG4VGh842OCW7iVo","registrationId":null,"title":"下线通知","content":"意外下线,如不是您本人操作,请重新登
录"}
我知道一种情况 laravel队列,默认有一个执行时间,执行超时了就会重新放进队列,但是超时的依然会执行下去,这样就会出现多条了。可以先看一下队列代码的执行时间,看一下是否是这种情况。
应该是超时重新发送了
可以在监听类中
或者在命令中设置超时时间和重试次数
也有可能是你在EventServiceProvider里面注册了事件,然后还开启了自动发现事件,这是多么痛的领悟,这算是框架bug吗
你好,laravelS 是什么?我也发生这个问题了,监听被重复调用了