- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Понадобилось ограничить частоту обращений к сайту с одного ip. Скажу сразу почему штатные средства меня не устраивают:
- нужно делать исключения для яндекса и гугла, а поскольку ip у них меняются, а юзер агент легко подделать, то скрипт должен еще и делать обратный dns-запрос (сохраняя результат в кэш)
- нужно писать в лог ip и хосты забаненных
- при превышении лимита нужно выводить каптчу
Проще все это сделать в движке сайта, но возникает вопрос: а где лучше хранить количество запросов с точки зрения производительности? Многие предлагают файлы и даже бд (которая итак нагружена), но такая "защита" скорее сама положит сайт. Самое быстрое из того, что я нашел - memcache, но насколько это будет оправдано и есть ли другие варианты?
БД оптимальный вариант если оптимизировано и хостинг не дышит на ладом.
А memcached на сколько я знаю для кеширования в ОЗУ.
А как это обратный DNS запрос? Я могу по IP узнать хост???
По сабжу, я выбрал файлы + ОЗУ.
Самое быстрое из того, что я нашел - memcache, но насколько это будет оправдано и есть ли другие варианты?
Можно мемкеш, конечно же. Это хорошее решение. Если хотите что-то более подходящее - Redis. Redis как раз хорошо заточен под счётчики.
Можно мемкеш, конечно же.
В принципе я так уже и сделал и работает как надо, просто никогда не слышал, чтобы его кто-то использовал в таких целях.
А как это обратный DNS запрос? Я могу по IP узнать хост???
да, это делает стандартная пхпшная функция gethostbyaddr.
Редиску.
дышит на ладом
втф?
В принципе я так уже и сделал и работает как надо, просто никогда не слышал, чтобы его кто-то использовал в таких целях.
А его и нельзя использовать для счётчиков - нетранзакционная база. Но в вашем случае это без разницы - если затрётся пара-тройка плюсодинов, то ничего страшного не произойдёт.
Самое быстрое из того, что я нашел - memcache, но насколько это будет оправдано и есть ли другие варианты?
можно еще посоветовать apc, xcache, тоже умеют сохранять в ОЗУ, можно еще MEMORY таблицы в MySQL, но это уже будет значительно медленнее, но можно использовать почти всю мощь инструментария MySQL