Вход для пользователей

Ограничение трафика за последние NN-дней

Недавно поставил sams, но не очень мне нравится схема сброса счетчиков на 1-е число месяца. Юзеры быстренько выбирают трафик, а потом ходят до конца месяца и жалуются.
Решил изменить схему: ежедневно пересчитываю трафик за последние 30 дней, и отключаю тех, кто перебрал. В этом случае юзеры не ждут конца месяца, а могут получить трафик и раньше, в зависимости от его расхода.
Поставил по крону в полночь выполнеие sql-запроса и перезапуск сквида.
Если кому надо - вот запрос:

====== SQL ======
USE squidctrl;

UPDATE squidusers SET size=0,hit=0;
UPDATE squidusers SET enabled=1 where enabled=0;

CREATE TEMPORARY TABLE cache_
SELECT sum(size) size_,user,domain,sum(hit) hit_
FROM squidlog.cache WHERE (date > SUBDATE( NOW(),'31 DAYS'))
GROUP BY user,domain;

UPDATE
squidusers a
SET size=(
SELECT size_ FROM cache_ WHERE (a.name=cache_.user && a.domain=cache_.domain )
);

UPDATE
squidusers a
SET hit=(
SELECT hit_ FROM cache_ WHERE (a.name=cache_.user && a.domain=cache_.domain )
);

UPDATE squidusers SET enabled=0
WHERE ((size >quotes * 1048576) && quotes >0 && enabled=1);

====== SQL ======

И заодно, пропатчил blocked.php на предмет вывода статистики юзера за последние 30 дней, что бы он мог узнать, сколько ему еще осталось

Разработчикам: если мысль заинтересовала - неплохо бы увидеть реализацию в будущих версиях

Поправка:
Должно быть "WHERE (a.nick=cache_.user" вместо "WHERE (a.name=cache_.user "
У меня пока эти поля совпадают.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".