Tak jak napisał
f1xer można to zrobić na zasadzie sesji. Czyli robisz tabele z ip usera(jeśli chcesz po ip) lub po zmiennej $_SESSION['USERNAME'] dajesz licznik. Każde kliknięcie 'czegoś multimedialnego' odzwierciedla się wysłaniem UPDATE do bazy i powiększenie licznika o 1.
Piszesz zewnętrzny plik który wykonuje skrypt, jeżeli user = $_SESSION['USERNAME'] i licznik > 3 to przekierowanie na stronę w celu pobrania płatności, jeżeli nie to licznik zwiększasz o jeden poprzez UPDATE.
Robisz INCLUDE takiego pliku przy stronach które zawierają jakieś multimedia i po sprawie.
Jeśli chodzi o czyszczenie i zależy Ci na mechaniźmie nie na zasadzie sesji tylko ograniczeniu czasowym np user po pierwszym zalogowaniu może oglądać filmy tylko przez 3 godziny to albo wydłużasz sesje i trzymasz się ustaleń od górnych albo pobierasz date i godzinę od usera kiedy się zalogował i dajesz również zewnętrzny skrypt który po pierwsze sprawdza czy w dniu dzisiejszym nastąpiło logowanie (jeśli nie to datę którą pobrał zapisuje jako datę bazową do odliczania czasu) jeśli tak to 'ignoruje.Po drugie trzeba jeszcze dać warunek który sprawdza czy minęło 5 godzin , jeśli tak i po tym czasie następuje zalogowanie to znowu data jest ustawiana jako bazowa (takie ograniczenia opłaca się robić jeśli ktoś często się wylogowuje i non stop tworzy nam nowe sesje).
Ja zazwyczaj trzymam się sesji lub cookies (daje sobie spokój z takimi czasowymi czujkami).
Jeśli chodzi o techniczne wykonanie to w taki sposób możesz mierzyć czas :
Kod
$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbdatabase, $db);
mysql_query("SET NAMES 'utf8'");
$tajm = date("dmYHis");
$czas = date("dmYHis")-300;
$aktywny = "UPDATE aktywni SET czasout = '" . $tajm . "' WHERE kto = '" .$_SESSION['USERNAME'] . "'";
mysql_query($aktywny);
$sql_8 = "SELECT * FROM aktywni WHERE aktywny = 'a' and czasout > '" .$czas . "'";
$result8 = mysql_query($sql_8);
$numrows8 = mysql_num_rows($result8);
Tak zazwyczaj wykonuje się liczniki online.
$tajm = date("dmYHis"); - jest to format unixowy daty :
oznacza np. 22072006160910 gdzie trzecia i czwarta cyfra od konca wskazuje ilosc minut.
Trochę zboczyłem z tematu ale może coś pomogę.
Pozdrawiam
Mariusz
hehe zanim napisałem tego POSTA poprzedniego to już 4 wpisy się pojawiły.
Moim zdaniem bazy nie trzeba czyścić tylko zrobić oddzielną tabelę i operować na UPDATE.
Natomiast powyższe rozwiązanie nr.1 z cronem jest git.