Mam problem odnośnie odnowienia wartości w komórce tabeli MySQL co 24h z poziomu PHP. Strona znajduje się na serwerze współdzielonym.

Myślałem, aby dać:
  1. $dodaj = 100;
  2. $teraz = time();
  3. $czas = 24 * 60 * 60;
  4. $odnowienie = $teraz + $czas;
  5. $czas2 = mysql_fetch_array(mysql_query("SELECT czas_odnowy FROM ".PREFIKS."users WHERE login='".$gracz['login']."'"));
  6.  
  7. if ($teraz > $czas2) {
  8. mysql_query("UPDATE czas_odnowy FROM ".PREFIKS."user SET czas_odnowy = $odnowienie WHERE login='".$gracz['login']."'");
  9. mysql_query("UPDATE odnawiana_wartosc FROM ".PREFIKS."user SET odnawiana wartość = $dodaj WHERE login='".$gracz['login']."'");
  10. } else {
  11. echo '24 godziny jeszcze nie minęły';
  12. }


Skrypt byłby sprawdzany po każdym zalogowaniu USERa, ale powoduje to nierówność konkurowania ze sobą userów, gdyż jeśli jeden zaloguje się równo 24h i 1 sekunde od ostatniego wykonania skryptu, a drugi 25h od ostatniego wykonania skryptu, to tworzy się między nimi 1 godzina różnicy przy wpisie kiedy skrypt ma się wykonać kolejny raz.

Chciałbym, aby zamiast takiego obejścia sprawy, stworzyć skrypt, który będzie się wykonywał równo o 00:01 czasu serwera.
Strona jest na serwerze współdzielonym. Bynajmniej na jakiś nieokreślony czas.

EDIT exclamation.gif!!!

Czy można to rozwiązać w taki sposób??
  1. $dodaj = 100;
  2. $teraz = time();
  3. $czas = 24 * 60 * 60;
  4. $odnowienie = $teraz + $czas - $roznica; // oblicza za jaki czas powinien się wykonać kolejny skrypt
  5. $czas2 = mysql_fetch_array(mysql_query("SELECT czas_odnowy FROM ".PREFIKS."users WHERE login='".$gracz['login']."'"));
  6. $roznica = $teraz - $czas2; // oblicza różnicę między obecnym czasem a rekordem z "czas_odnowy"