Php mysql触发器或事件在一定时间(60秒)后执行更新

Php mysql触发器或事件在一定时间(60秒)后执行更新,php,mysql,Php,Mysql,我用PHP和MySQL创建了登录网页。登录失败时,MySQL数据库将记录尝试。每60秒,尝试将重置为零。尝试3次后,该网页将不允许我登录该用户名 我有2个名为MySQL的table userdb(用户名、密码和尝试次数) 及 loginA(用户和登录尝试) 如果登录失败,我设法在userdb中记录了尝试次数。对于loginatetest用于使触发器将userdb更改回尝试零。我试图将其重置为零,但不是60秒。它马上就发生了。如果我添加了do sleep(60),它将在网页上冻结60秒。我想知道有

我用
PHP
MySQL
创建了登录网页。登录失败时,
MySQL
数据库将记录尝试。每60秒,尝试将重置为零。尝试3次后,该网页将不允许我登录该用户名

我有2个名为MySQL的
table

userdb(用户名、密码和尝试次数)

loginA(用户和登录尝试)

如果登录失败,我设法在
userdb
中记录了尝试次数。对于
loginatetest
用于使触发器将
userdb
更改回尝试零。我试图将其重置为零,但不是60秒。它马上就发生了。如果我添加了do sleep(60),它将在网页上冻结60秒。我想知道有没有办法在60秒后激活触发器而不在网页上加载60秒

MYSQL代码

CREATE TRIGGER login_condition
AFTER UPDATE ON loginA FOR EACH ROW
BEGIN
 DO SLEEP(40);
 UPDATE userdb set attempts = 0 where username=new.username; 
END
PHP代码(用于激活触发器)


我希望此触发器在60秒后激活,从而影响网页加载。

将上次尝试的时间放入
loginA
表中

使用事件计划程序每隔几分钟执行一次查询,而不是使用触发器。如果自上次尝试以来已超过60秒,则查询可以将尝试重置为0

CREATE EVENT reset_login
ON SCHEDULE EVERY 1 MINUTE
DO
    UPDATE userdb AS u
    JOIN loginA AS l ON u.username = l.username
    SET u.attempts = 0
    WHERE u.attempts > 0 AND l.last_attempt < DATE_SUB(NOW(), INTERVAL 1 MINUTE);
创建事件重置\u登录
按计划每1分钟
做
将userdb更新为u
在u.username=l.username上以l的身份加入loginA
设置u.T=0
其中u.attempts>0,l.last_attempts
调用,而不是更新存储过程,该存储过程将在60秒后过期,就像触发器一样
CREATE EVENT reset_login
ON SCHEDULE EVERY 1 MINUTE
DO
    UPDATE userdb AS u
    JOIN loginA AS l ON u.username = l.username
    SET u.attempts = 0
    WHERE u.attempts > 0 AND l.last_attempt < DATE_SUB(NOW(), INTERVAL 1 MINUTE);