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":"意外下线,如不是您本人操作,请重新登
录"}
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

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

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

应该是超时重新发送了

可以在监听类中

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

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

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

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

4年前 评论

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

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

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