2017-07-30 141 views
0

我创建了一个使用数据库的iOS和Android应用程序,用户可以在其中登录哪个“User_active”获取更改为1并且注销获取更改为0.我遇到的唯一问题是我无法检查用户是否已经离开了应用程序,或者他们是否已经关闭了应用程序,所以我想要做的就是在phpmyadmin上创建一个事件,在30分钟后将“User_active”更改为0,但是我无法缝制把事情做好。我将Awardspace用作我的主机,我只看到了localhost的教程。我得到的错误是我的用户帐户没有创建事件的写入权限,我找不到任何用户选项卡来更改用户权限。如果任何人都能以正确的方向送我,那将是一个很好的解决方案。MySQL和PHPMyAdmin事件调度程序

+0

您是否使用root帐户登录? 或 你应该重置mysql的密码为“root”https://www.howtoforge.com/setting-changing-resetting-mysql-root-passwords,然后刷新所有权限并运行grant all privileges mysql命令 – LogicBlower

+0

我做不知道我是否登录了我正在使用Awardspace进行托管,并且他们有一个按钮可以将您带到您的数据库,因此我不知道我登录的时间以及何时尝试在你提供的链接我得到一个错误“访问被拒绝;你需要(至少一个)CREATE USER权限(这个操作)”,我不知道该怎么做,因为在使用phpmyadmin时没有用户选项卡awardspace。 – Devon

回答

0

phpMyAdmin是一个奇妙的互动工具,但它是而不是这个工具。

在某些方面,这是一个相当普遍的问题。典型的基于web的应用程序不知道用户何时离开,他们只知道用户何时做某事。一种方法是执行以下操作:

1 - 将字段添加到用户表(具有“user_active”字段的同一个表)以跟踪该用户任何类型的最后一个活动。这应该是DATETIME或TIMESTAMP字段,并且始终使用当前时间进行更新。

2 - 添加cronjob以检查用户表中的任何记录,以查看它们是否(a)仍然登录(user_active = 1)时间戳超过30分钟。如果是这样,请将user_active设置为0 - 基本上在30分钟后强制注销。您可能希望有一个额外的字段来表明它是强制自动注销而不是用户启动的注销。

如果您的托管服务允许cronjobs,然后定期运行(可能每隔5分钟),你就完成了。如果您的主机服务不允许cronjobs,那么一种选择是将“自动用户注销”功能添加为每个常规页面的一部分。如果您有成千上万的活跃用户,那么这将不起作用,因为开销太大(并且每个页面上的延迟都会显示)。但是,如果您的活跃用户数量很少,它将完成工作 - 我已经使用该方法完成了大量系统管理工作。

+0

嗨@manassehkatz你说的正是我想要做的,但我遇到的问题是。我从phpmyadmin得到的错误是“访问被拒绝;您需要(至少一个)CREATE USER权限(这个操作)”我可以得到这个在本地主机上工作,但是当我把它放在网上在这种情况下,我使用Awardspace进行托管,所有用户选项卡都不存在,因此我无法授予正确的权限。你知道如何解决这个问题吗?感谢您的帮助 – Devon

+0

@Devon您不应该需要CREATE USER权限,事实上,除了可能通过控制面板(即通过常规MySQL命令或phpMyAdmin),大多数托管公司都不会授予CREATE USER权限。你应该有一个指定的MySQL用户名/密码,用于登录到phpMyAdmin,它应该适用于任何正常使用 - 通过PHP程序创建表,ALTER TABLE,INSERT,DELETE,SELECT等。 – manassehkatz

+0

所以你说的是我不能创建一个事件与非本地主机phpmyadmin – Devon