php - php和mysql给用户按小时加分的解决方法?

标签 php mysql time

在我正在处理的网站中,我需要添加用户积分。每个用户都将拥有自己的积分,积分上限为 200。注册后用户将获得 100 积分。随着各种任务,用户积分将被扣除。

但我苦苦挣扎的主要问题是如何为用户添加积分,因为每个用户都需要每小时获得 1 积分,除非他有 200 或更多积分。

我的第一个想法是做一个 cronjob,它将每小时运行一个脚本,该脚本将检查用户是否经过验证以及用户是否少于 200 分并为每个用户加 1 分。

但是在阅读了一些文章之后,我想到了不同的方法,但我并不完全理解。更好的方法,更少的服务器资源消耗是运行一个函数,该函数将在每次用户登录时检查他有多少点并向他添加适当数量的点。问题是我不知道如何设置它,如果他离线(如 8 小时)如何计算给用户添加多少分以及如何计时?或者甚至可以将 ajax 与计时器一起使用?

您对此有何建议和方法?

编辑:既然你问了,就补充一下,用户看不到彼此的分数。

最佳答案

当用户做某事时,检查您上次给他们积分的时间。如果是 5 小时前,给他们 5 分。如果是 10 小时前,给他们 10 分。等等。实现缓存,这样如果用户在一小时内访问您的网站 50 次,您就不必每次都检查数据库。

无论如何,简短的回答是,在加载用户数据时进行检查,而不是每小时自动对所有用户进行检查,无论他们是否处于事件状态。

关于php - php和mysql给用户按小时加分的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382059/

相关文章:

php - 将 PHP 更新为 mysql

php - 如果在数组和数据库中

mysql - 如果 Node js存在mysql中则忽略更新数据

python - 计算python列中所有日期之间的时间差

php - Laravel - 删除整个集合

php - 内存中是否存在空索引

php - 将 API 中的多个值插入 mysql 数据库

sql - mysql 如何不更新日期时间?

time - LibreOffice SUM 时间段,格式为 HH :MM:SS

java - Joda 时间无法正确解析月份