= 12 && (isset($_SESSION['U-6ren">
gpt4 book ai didi

php - 试图让 php 查询每天只发生一次

转载 作者:行者123 更新时间:2023-11-30 22:35:39 25 4
gpt4 key购买 nike

我希望这段代码一天只查询一次,这意味着在它发生后代码将被隐藏或禁用,这可能吗?谢谢:)

$time = date("G");
if($time >= 12 && (isset($_SESSION['UserName']))){
mysql_query("Update users set diamonds = diamonds+1 where username = 'NaiTreNo'");
}

最佳答案

当然,cronjob 是一个开始,但即使是 cronjobs 也可能会失败,或者您可能有多个机器用于同一个数据库。

last_daily_diamond datetime 列扩展表格,您在用户获得钻石时设置该列,因此:

update users set diamonds=diamonds+1, last_daily_diamond = now()
where username='flaschenpost' and last_daily_diamond < now() - interval 24 hour
;

如果您指的是日历日而不是 24 小时制,那么不要使用 datetime,而要为 last_daily_diamond 使用 date 列。

update users set diamonds=diamonds+1, last_daily_diamond = curdate()
where username='flaschenpost' and last_daily_diamond <

curdate();

如果用户在 10 天后过来并且应该得到 10 颗钻石(这个决定取决于您的客户/老板/您自己!),它会得到

update users set diamonds=diamonds+1, last_daily_diamond = last_daily_diamond + interval 1 day
where username='flaschenpost' and last_daily_diamond <

curdate();

(如果查询本身发送的频率足够高)

或者更复杂一点(还没有测试)

update users set diamonds=diamonds+
(@given := round((unix_timestamp(curdate()) - unix_timestamp(last_daily_diamond))/(24*60*60))),
last_daily_diamond = curdate() + interval @given days
where username='flaschenpost' and last_daily_diamond <

curdate();

如果你不能扩展用户表,你也可以为此创建一个额外的表并加入用户表。

关于php - 试图让 php 查询每天只发生一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com