2013-09-10 8 views
-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']."'"); 

} 

사용자가 로그인하지 않은 경우에도 다음 코드를 어떻게 만들 수 있습니까?사용자가 로그인하지 않은 경우 업데이트

예를 들어 그가 일일 다시 와서 가져처럼 1728 나무 (1 일)/50 (수 자원 매 50 초)으로 86400 때문에 당신이를 프로그래밍을하고 감지하고있어 1728

+0

일부 RDBMS를 사용하면 모든 사용자에게 Wood = Wood + 5 세트를 업데이트 할 수 있습니다. 사용자가 로그인 할 때 응용 프로그램 내에서이를 수행하는 것을 잊어 버리고 매 n 분마다 실행합니다. 또는 마지막 로그인 시간을 추적하고 "만료 횟수"를 계산하십시오. – ssice

+0

코드를 다시 생각해야한다고 생각합니다. 이 경우 게임을 프로그래밍하고 있지만 한 명의 사용자 만 있으므로 작업 대기열을 사용하여 작업하고 (리소스/시간/기타 가져 오기) 다른 테이블에 저장하고 정리해야하는 최상의 옵션입니다 준비가되면 아이템. –

+0

만료 횟수는 어떻게 계산합니까? – user2766669

답변

0

같다 게임은 실시간이어야합니다. 예를 들어 cron.php과 같은 파일을 만들고 그 파일을 모든 페이지에 포함시킵니다. 이를 넣어 해당 파일 내부의

<?php 
$timeNow = time(); 
$timeExpire = $timeNow + 10; 
$Users = $con->query("SELECT * FROM players WHERE TimeExpire<='".$timeNow."'"); 
while($UserInfo = $User->fetch_object()){ 
    $givenWood = $timeNow - $UserInfo->TimeExpire; 
    $con->query("UPDATE players SET Wood = Wood+ {$givenWood} WHERE Username='". $UserInfo->Username ."'"); 
    $con->query("UPDATE players SET Time = '".$timeNow."' WHERE Username='". $UserInfo->Username ."'"); 
    $con->query("UPDATE players SET TimeExpire = '".$timeExpire."' WHERE Username='". $UserInfo->Username ."'"); 
} 

?> 

난 그냥 코드에서 내 논리에 문제를 that.So을 할 수있을 수 있는지 아이디어를 제공하기 위해이 코드를 넣어 염두에두고. (당신이해야 할 일은 당신이 그들에게 나무를 줄 수있는 사용자를 얻고, 당신이 그들에게 나무를주고 그들에게 적당한 양의 목재를주기까지의 시간을 계산하는 것입니다).

+0

그래, 이미 고쳐졌지만 고마워. – user2766669

관련 문제