Поняв однажды, что количество страниц на сайте переваливает за десять тысяч и активно продолжает расти, при этом предоплаченный трафик и место на сервере остается тем же самым, решил применить некую систему рейтинга статей, с последующим удалением старых и никому ненужных записей.

Для начала система очень простая:

- если посетитель попадает на страницу с этого же сайта, то рейтинг увеличивается на единицу (т.е. человека привлекло название заметки, либо он просто нажал Вперед/Назад)
- если посетитель перешел с другого сайта, либо ввел конкретный адрес статьи (реферрера нет) в своем браузере, значит статья кому-то показалось интересной, пусть ее рейтинг увеличивается на три единицы.

Конечно по хорошему здесь надо учитывать поисковых ботов и т.п. нюансы, но поначалу можно это не принимать во внимание.

В результате получается примерно такой SQL-запрос:

UPDATE table SET rating=rating+$add WHERE id=$article

Такая функция сразу же отлично заработала, но обнаружилось следующая неприятность, время добавления статьи стало меняться на время ее последнего посещения (это стало понятно не сразу).

Поскольку кажется более удобным чтобы MySQL сам выполнял некоторую работу, например проставлял время добавления статьи, то изначально добавив свойство CURRENT_TIMESTAMP можно было надолго успокоится. Но потом оказалось, что существует еще один параметр, который в некоторых случаях автоматизации дописывается к основному. Это - ON UPDATE CURRENT_TIMESTAMP. Если его убрать, то изменение времени не будет происходить при редактировании записи.

Эта штука не всегда становится очевидной, но говорит о том, что нужно быть внимательнее, а не делать (как обычно бывает) на скорую руку и на коленке.

Теперь есть система рейтинга, и, надеюсь, через некоторое время можно будет начать удалять статьи со спокойной душой.