Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试让php查询每天只发生一次_Php_Mysql_Sql - Fatal编程技术网

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

尝试让php查询每天只发生一次,php,mysql,sql,Php,Mysql,Sql,我希望这段代码做查询只是一天一次,这意味着在它发生后,代码将被隐藏或禁用一些如何,这是可能的?谢谢:) 正确的方法是在linux中使用cron作业,每天在那里执行一次php脚本 但是如果你真的想把它保存在你的php代码中,你可以选择一天一次,然后做一个if语句来检查时间。正确的方法是在linux中使用cron作业,每天在那里执行一次php脚本 但是如果你真的想把它保存在你的php代码中,你可以选择一天一次,然后做一个if语句来检查时间。当然,cronjob是一个开始,但是即使是cronjobs也

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


正确的方法是在linux中使用cron作业,每天在那里执行一次php脚本


但是如果你真的想把它保存在你的php代码中,你可以选择一天一次,然后做一个if语句来检查时间。正确的方法是在linux中使用cron作业,每天在那里执行一次php脚本


但是如果你真的想把它保存在你的php代码中,你可以选择一天一次,然后做一个if语句来检查时间。当然,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
;
curdate()

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

updateusers set diamonds=diamonds+1,last\u daily\u diamond=last\u daily\u diamond+interval 1天
其中username='flaschenpost'和last_daily_diamond'
curdate()

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

或者更复杂一点(尚未测试)

更新用户设置钻石=钻石+
(@given:=round((unix_timestamp(curdate())-unix_timestamp(last_daily_diamond))/(24*60*60)),
最后一天钻石=curdate()+给定天数的间隔
其中username='flaschenpost'和last_daily_diamond'
curdate()


如果不能扩展users表,还可以为此创建一个额外的表并加入users表。

当然,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
;
curdate()

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

updateusers set diamonds=diamonds+1,last\u daily\u diamond=last\u daily\u diamond+interval 1天
其中username='flaschenpost'和last_daily_diamond'
curdate()

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

或者更复杂一点(尚未测试)

更新用户设置钻石=钻石+
(@given:=round((unix_timestamp(curdate())-unix_timestamp(last_daily_diamond))/(24*60*60)),
最后一天钻石=curdate()+给定天数的间隔
其中username='flaschenpost'和last_daily_diamond'
curdate()


如果无法扩展users表,还可以为此创建一个额外的表并加入users表。

使用cronjob/计划任务单独使用cronjob可能不好,因为可能会有几天作业失败,并且您不知道在哪一天会出现钻石。此外,这可能与某些游戏中的情况类似:您登录时会获得钻石,但每天最多只能获得一次。使用cronjob/计划任务单独使用cronjob可能不好,因为有时作业会失败,您不知道会在哪一天获得钻石。这也可能像在一些游戏中:当你登录时,你会得到钻石,但最多每天一次。
update users set diamonds=diamonds+1, last_daily_diamond = curdate()
where username='flaschenpost' and last_daily_diamond < 
update users set diamonds=diamonds+1, last_daily_diamond = last_daily_diamond + interval 1 day
where username='flaschenpost' and last_daily_diamond < 
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 <