$timeNow = time();
$timeExpire = $timeNow + 10;
$User = $con->query("SELECT * FROM players WHERE Username='".$_SESSION['Username']."'");
$UserInfo = $User->fetch_object();
if($timeNow >= $UserInfo->TimeExpire) {
echo "Wood Gathered";
$con->query("UPDATE players SET Wood = Wood+5 WHERE Username='".$_SESSION['Username']."'");
$con->query("UPDATE players SET Time = '".$timeNow."' WHERE Username='".$_SESSION['Username']."'");
$con->query("UPDATE players SET TimeExpire = '".$timeExpire."' WHERE Username='".$_SESSION['Username']."'");
}
Как я могу заставить следующий код работать, даже если пользователь не вошел в систему?Обновить, когда пользователь не зарегистрирован
Как, например, он возвращается в 1 день и получает 1728 дерево, потому что 86400 (1 день)/50 (получаете ресурсы каждые 50 секунд) равно 1728
Некоторые РСУБД позволяют вам «ОБНОВИТЬ игроков» установить Wood = Wood + 5' каждому пользователю, вы запускаете это каждые n минут и забываете делать это внутри приложения, когда пользователь входит в систему и прочее. Или вы следите за последним временем входа в систему и подсчитываете, сколько было «истечений». – ssice
Я считаю, что вам нужно переосмыслить свой код. В этом случае вы программируете игру, но у вас нет только одного пользователя, поэтому вам лучше работать с очередью задач, сохранять действия (получать ресурсы/время/и т. Д.) На другой таблице и очищать их предметы, когда они готовы. –
Как я могу рассчитать, сколько истечений существует? – user2766669