Salve a tutti stò progettando un browser game è per gestire le "risorse" che un giocatore gudagna nel tempo utilizzo queste due funzioni:

Codice PHP:
function check_last_login($id)
{
  
$info        mysql_query("SELECT * FROM gemu_ninja WHERE id_utente = '$id'") or die('Errore query check: ' mysql_error());
  
$info_fetch  mysql_fetch_array($info);
  
$data        $info_fetch[last_login];
  
  
$diff_p      mysql_query("SELECT DATEDIFF(NOW(),'$data') as DateDiff") or die('Errore query check: ' mysql_error());;
  
$result      mysql_fetch_array($diff_p);
  
//Converto i giorni di differenza in secondi
  
$gg_sec      $result[DateDiff]*86400;

  
//prendi ore minuti e secondi dal Db (Vengono memorizzati in precedenza con NOW()      
  
$ore         = (integer) substr($data112);  
  
$minuti      = (integer) substr($data142);  
  
$secondi     = (integer) substr($data172);  
  
  
$tot_last    = ($ore*3600) + ($minuti*60) + $secondi;
  
  
$ore_att     = (integer) date("H");
  
$minuti_att  = (integer) date("i");
  
$secondi_att = (integer) date("s"); 
  
  
$tot_att     = ($ore_att*3600) + ($minuti_att*60) + $secondi_att;
  
  
$tot_int     $gg_sec - ($tot_last $tot_att);
  
$isit        $tot_int;
  
  
//Numero di 5 min (e quindi di incremento risorse) avvenuti
  
for($i=0;$isit>=0;$i++)
  {
     
$isit  $isit 300;
  }

  
$isit        =  -$isit;
  
$totale      = array($tot_int,$isit);
  return 
$totale;
  
}

function 
update_stats($id,$info)
{
        
//Info zero sono appunto i secondi totali restituiti dalla funzione precedente
    
$sec_guad       = (integer) $info[0];
       
//L'errore credo sia qui
    
$num_refresh    round($sec_guad/300);
    if(
$num_refresh != 0)
    {
      
$info            mysql_query("SELECT * FROM gemu_ninja WHERE id_utente = '$id' LIMIT 1") or die('Errore query check:'mysql_error());
      
$tab_utenti      mysql_fetch_array($info);
         
//So che questo codice potrebbe apparire inutile ma è solo per un mio ordine mentale
      
$salute          $tab_utenti[salute];
      
$salute_tot      $tab_utenti[salute_tot];
      
$chakra          $tab_utenti[chakra];
      
$chakra_tot      $tab_utenti[chakra_tot];
      
$resistenza      $tab_utenti[resistenza];
      
$resistenza_tot  $tab_utenti[resistenza_tot];
      
$soldi           $tab_utenti[soldi];
      
$guadagno_soldi  round((property_sum($tab_utenti[id_ninja]) - tot_manutenzione($tab_utenti[id_ninja]))/12);
      
      
$salut_guad      $salute     + ($num_refresh 10);
      
$chakra_guad     $chakra     + ($num_refresh 1);
      
$resistenza_guad $resistenza + ($num_refresh 1);
      
$soldi_guad      $soldi      + ($num_refresh $guadagno_soldi);
     
     if(
$salut_guad      $salute_tot) { $salut_guad      $salute_tot; }
     if(
$chakra_guad     $chakra_tot) { $chakra_guad     $chakra_tot; }
     if(
$resistenza_guad $resistenza_tot) { $resistenza_guad $resistenza_tot; }
     
     
$update            mysql_query("UPDATE `gemu_ninja` SET 
                                      `chakra`     = '
$chakra_guad',
                                      `resistenza` = '
$resistenza_guad',
                                      `salute`     = '
$salut_guad',
                                      `soldi`      = '
$soldi_guad',
                                      `last_login` = NOW()
                                       WHERE `id_utente` = '
$id' LIMIT 1") or die('Errore query update:'mysql_error());
    
     return 
true;
   }else
    {
        return 
false;
    }
    

Le due funzioni sembrano funzionare bene il problema è che se per esempio apro la pagina (quindi il contatore dei secondi per il refresh parte) e poi ne apro un'altra il tempo rimanente della seconda pagina è diverso dalla prima. Questo vale anche per le "risorse" incrementate infatti ho notato che se mancano tipo >20 le risorse sono già aumentate al refresh suggessivo.
In sostanza l'errore sembra essere che il tempo per il refresh in realtà non è di 5 minuti è credo che questo sia dovuto alla aprte di codice seguente:

Codice PHP:
    $num_refresh    round($sec_guad/300); 
Come posso correggerlo ?
Un grazie in anticipo