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":"意外下线,如不是您本人操作,请重新登
录"}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 7

我知道一种情况 laravel队列,默认有一个执行时间,执行超时了就会重新放进队列,但是超时的依然会执行下去,这样就会出现多条了。可以先看一下队列代码的执行时间,看一下是否是这种情况。

5年前 评论
莫名私下里 (楼主) 5年前

应该是超时重新发送了

可以在监听类中

    public $tries = 2;
    public $timeout = 60;

或者在命令中设置超时时间和重试次数

php artisan queue:work --timeout=30 --tries=2
5年前 评论
莫名私下里 (楼主) 5年前

也有可能是你在EventServiceProvider里面注册了事件,然后还开启了自动发现事件,这是多么痛的领悟,这算是框架bug吗

4年前 评论

你好,laravelS 是什么?我也发生这个问题了,监听被重复调用了

2年前 评论
莫名私下里 (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!