АвиаТОП.
Две таблицы.
avia_top_counts - собственно, счётчики.
id INT(11) - идентификатор ресурса (номер сайта-участника)
count INT(11) - счётчик хитов
start INT(11) - дата запуска счётчика в UNIX Time
ips LONGTEXT - список IP-адресов последних посетителей с временем их заходов, чтобы не считать релоады. В принципе, можно оптимизировать, т.к. является наследием времён plain/text-формата базы.
В данный момент содержит 147 записей суммарным объёмом 17кБ.
При каждом вызове картинки счётчика обновляется по
UPDATE avia_top_counts SET count=count+1 WHERE id='$id';
UPDATE avia_top_counts SET ips='$ips' WHERE id='$id';
Извлекается также несколько раз:
SELECT * FROM avia_top_counts WHERE id='$id'
При каждой генерации иконки считается место в рейтинге:
SELECT * FROM avia_top_counts WHERE 86400*count/(UNIX_TIMESTAMP()-start+1)>$rate AND (count>50 OR UNIX_TIMESTAMP()-start>86400);
avia_top_pages - счётчик посещений отдельных страниц.
url VARCHAR(255) - url считаемой страницы, он же уникальный идентификатор
count INT(11) - счётчик хитов на этой странице
start INT(11) - дата первого обращения в UNIX Time
last INT(11) - дата последнего обращения в UNIX Time (требуется для удаления устаревших страниц, к которым давно не обращались)
title VARCHAR(255) - заголовок страницы (извлекается из
Обновляется при каждом обращении по
UPDATE avia_top_pages SET start=start, count=count+1, last=UNIX_TIMESTAMP() WHERE url='$url';
Извлекается редко, в рейтинге страниц или в случайном переходе.