A ja bym na poczatku każdej strony dał:
<?php
SET currentTimestamp = NOW(),
zloto = zloto + (10*((currentTimestamp - lastTimestamp) / 60)),
lastTimestamp = currentTimestamp
// timestamp to sekundy od Epoch
// current - last = ilosc sekund, jaka uplynela miedzy odswiezeniem
// (current - last) /60 - ilosc minut
// 10 * ( (current - last) /60 ) - tyle zlota dojdzie przez dany okres
?>
i mając takią tablicę:
CREATE TABLE `zasoby` (
`id` int(11) NOT NULL DEFAULT '0',
`zloto` int(11) NOT NULL DEFAULT '0',
`lastTimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`currentTimestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin2;
--
-- Zrzut danych tabeli `zasoby`
--
INSERT
INTO `zasoby`
VALUES (1, 174, '2006-03-18 00:52:15', '2006-03-18 00:52:15');
Oczywiście kazdy wiersz w tablicy to osobny gracz, a do UPDATE dodajemy WHERE id = id_gracza.
Przykład działający:
http://www.scanner.eu.org/dev/zloto.phpObywamy sie bez CRONa i aktualizujemy tylko graczy, którzy sa online.