我写了一个脚本,如果时间到了,将用户的密钥活动状态更改为0。当我开始时,我将start_time
设置为time();比设定“60”多少天。
我怎样才能根据目前的做法计算剩下的时间或者剩下的时间或分钟数。
$user_info['days'] = "60"
`start_time` = 1332219600
function setup() {
mysql_connect('localhost', 'stresser_main', 'ZLLAUkuLIUU');
mysql_select_db('stresser_main');
$query = mysql_query("SELECT * FROM `keys` WHERE `active`='1'");
while ($user_info = mysql_fetch_array($query)) {
$time_ago = strtotime("-" . $user_info['days'] . " day");
$time_ago_other = strtotime("+" . $user_info['days'] . " day");
mysql_query("UPDATE `keys` SET `active`='0' WHERE `start_time` < $time_ago AND `id`='" . $user_info['id'] . "'");
}
}
答案 0 :(得分:0)
不要这样想。只做更新查询。如果有1000个active = 1的用户已过期,那么您将执行1000次更新查询。这样您就可以执行1个查询来解决您的问题。没有选择,只需要。
mysql_query("UPDATE keys SET active = 0 WHERE active = 1 AND start_time < $something");
像SQL 'WHERE start_time < NOW()'
一样对SQL做所有事情。您也可以在sql上进行计算。这里有很多SQL函数https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
这将更快,更安全。
不要使用mysql_函数。使用mysqli_或PDO。
在表上使用datetime字段,而不是整数unix时间戳。您将能够使用SQL日期函数。
使用\ DateTime()而不是strtotime。