Come progetto vorrei creare un gioco il problema è che voglio mettere al giocatore la possibilità di aumentare i suoi punti salute di un punto per ogni secondo che passa dal momento in cui clicca sull'apposito link fino ad un massimo di due ore:
Codice PHP:
ob_start();
$Username = $_SESSION['ID'];
$datain = mysql_result(mysql_query("SELECT InizioAdd FROM TBLutenti WHERE Username LIKE '$Username'"), 0);
$datafi = mysql_result(mysql_query("SELECT FineAdd FROM TBLutenti WHERE Username LIKE '$Username'"), 0);
if($_GET['pag'] == 'salute'){
//stabilisce la data attuale
$datain=date("Y-m-d H:i:s");
mysql_query("UPDATE TBLutenti SET InizioAdd='$datain' WHERE Username = '$Username'");
//stabilisce la data finale ovvero la data attuale + 2 ore
$datafi=date("Y-m-d H:i:s",mktime (date("H")+2,date("i"),date("s"),date("m") ,date("d"),date("Y")));
mysql_query("UPDATE TBLutenti SET FineAdd='$datafi' WHERE Username = '$Username'");
set_time_limit(0);
for ($i=0; $i<7200; $i=$i+1){
ignore_user_abort(true);
mysql_query("UPDATE TBLutenti SET Salute=Salute+1 WHERE Username = '$Username'");
sleep (1);
header('Location: Profilo.php');
}
}
il problema è che nonostante l'header sotto lo sleep il ciclo continua per due ore,se chiudo il browser e lo riapro cioè facendo un logout forzato e faccio il login lo script funziona come dovrebbe. Ho pensato di trasferire la parte del ciclo in un'altra pagina però non saprei come farla partire, cioé con l'ignore_user_abort l'utente entra nella pagina prima e lo script parte, mentre se voglio far partire lo script senza neanche entrare nella pagina cosa uso?