记住我的令牌:在同一秒

时间:2017-07-27 12:33:58

标签: php laravel laravel-5.4

Laravel为身份验证提供了开箱即用的事件,所以我使用LoginListener来记录数据库中的用户登录。

public function handle(Login $event) {

    if (!isset($event->user) || empty($event->user) ||
        !isset($event->user->userid) || empty($event->user->userid)) {
        return false;
    }

    if (Auth::viaRemember())
        Logins::create(array('userid' => $event->user->userid, 'type' => 3));
    }

}

因此,每次通过remember-me标记对用户进行身份验证时,都会在logins表中插入一个条目(user_id,type)。

问题是,有时我会为同一个登录事件获得多个插入内容 - 有时甚至是20行,所有内容都具有相同的CURRENT_TIMESTAMPuser_idtype。所以,似乎登录事件被多次触发,并且监听器在同一秒内多次处理它

为什么会发生这种情况?

一些背景知识:

  • 网站架构涉及多个主机和负载均衡器。
  • 我正在使用MySQL,readwrite连接分开
  • Laravel版本:5.4
  • 多个条目偶尔也会发生 最近几个月
  • 生产和开发环境出现问题
  • 事件处理程序未排队

0 个答案:

没有答案