-1
$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
有些RDBMS允許你爲每個用戶'更新玩家設置Wood = Wood + 5',每隔n分鐘運行一次,忘記在應用程序內部做這些事情,當用戶登錄時,或者你記錄上次登錄時間並計算出有多少「過期」。 – ssice
我相信你需要重新考慮你的代碼。 在這種情況下,您正在編程一款遊戲,但您並不只有一個用戶,因此您需要使用任務隊列的最佳選項,將操作(獲取資源/時間/等)保存到另一個表中並清除這些項目準備就緒。 –
我該如何計算有多少到期日? – user2766669