Ограничение количество запросов

Программирование, которое не связано с API и Flash.

Ограничение количество запросов

Сообщение manticore » 16 фев 2013, 23:17

Возник вопрос, как с помощью PHP ограничить количество запросов к определенному файлу от одного IP адреса?
Ведь такое возможно? :)
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Ограничение количество запросов

Сообщение Грачик » 16 фев 2013, 23:22

Да возможно!
Грачик

 
Сообщения: 162
Зарегистрирован: 08 фев 2013, 16:04
Благодарил (а): 21 раз.
Поблагодарили: 1 раз.

Re: Ограничение количество запросов

Сообщение manticore » 16 фев 2013, 23:26

Грачик
В каком то смысле это был вопрос с утверждением, я и сам знал что такое возможно, интересно только как ^_^
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Re: Ограничение количество запросов

Сообщение sasha^ » 17 фев 2013, 01:20

определить ип можно так например:
  1. Ip = intIp = $_SERVER ["REMOTE_ADDR"];
  2. if (isset ($_SERVER ["HTTP_X_FORWARDED_FOR"])) {
  3.  if (isset ($_SERVER ["HTTP_X_REAL_IP"]))
  4.   intIp = $_SERVER ["HTTP_X_REAL_IP"];
  5.  else
  6.   intIp = $_SERVER ["HTTP_X_FORWARDED_FOR"];
  7. }

Ip - внешний адрес, intIp - внутренний адрес

ну а чтобы запретить скачивание файла по сто раз с одного ип - вести бд...
и в случае, если чел уже качал или какое вам нужно условие - запрещать...
удачи! :D
sasha^

 
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52
Благодарил (а): 1 раз.
Поблагодарили: 136 раз.

Re: Ограничение количество запросов

Сообщение manticore » 17 фев 2013, 01:27

sasha^
Запрос в базу данных все равно несет нагрузку, а мне нужно если пользователь 20-30 запросов в секунду отослал, то они не должны все обрабатываться, а только 5 из них, т.е что-то по типу защиту от DDoS, но у меня цели для этого другие. Например ответил сервер на 5 запросов, а остальные выдал ошибку насчет того, что слишком много запросов в секунду к серверу. Вот интересно как это можно реализовать без использования базы данных или записей в файлы.
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Re: Ограничение количество запросов

Сообщение Serge » 17 фев 2013, 07:53

manticore писал(а):sasha^
Запрос в базу данных все равно несет нагрузку, а мне нужно если пользователь 20-30 запросов в секунду отослал, то они не должны все обрабатываться, а только 5 из них, т.е что-то по типу защиту от DDoS, но у меня цели для этого другие. Например ответил сервер на 5 запросов, а остальные выдал ошибку насчет того, что слишком много запросов в секунду к серверу. Вот интересно как это можно реализовать без использования базы данных или записей в файлы.

Запрос в БД обрабатывается несколько милисекунд (Запрос занял 0.0007 сек.). К тому же, насколько я помню, пока не обработается предыдущий запрос - новый не начнет (в MySQL), так что по идее это и есть способ защиты от подобных множественных запросов.
http://sevenlines.com.ua - разработка и продвижение сайтов

За это сообщение автора Serge поблагодарил:
manticore
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Ограничение количество запросов

Сообщение sasha^ » 17 фев 2013, 15:07

manticore писал(а):sasha^
Запрос в базу данных все равно несет нагрузку, а мне нужно если пользователь 20-30 запросов в секунду отослал, то они не должны все обрабатываться, а только 5 из них, т.е что-то по типу защиту от DDoS, но у меня цели для этого другие. Например ответил сервер на 5 запросов, а остальные выдал ошибку насчет того, что слишком много запросов в секунду к серверу. Вот интересно как это можно реализовать без использования базы данных или записей в файлы.

никак без записи в БД или файлы!
только если использовать, например сервер на java или c++ или других языках и в них в массиве хранить пользователей...
но я думаю вы слишком усложняете проще с БД...

За это сообщение автора sasha^ поблагодарил:
manticore
sasha^

 
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52
Благодарил (а): 1 раз.
Поблагодарили: 136 раз.

Re: Ограничение количество запросов

Сообщение manticore » 18 фев 2013, 10:08

Serge
sasha^
Спасибо вам ;)
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Re: Ограничение количество запросов

Сообщение manticore » 18 фев 2013, 11:37

Еще возник вопрос, что-то я не пойму как сравнить 5 запросов, то что они в 1 секунду. Например я могу сравнить только последний совершенный запрос сделан он за секунду до того что сейчас или нет, но как сравнить были ли те старые 2-3 запроса сделанные в ту секунду или нет. Кто поможет или направит?

Например в базе данных так:

1 запрос - 2 секунда.
2 запрос - 2 секунда.
3 запрос - 3 секунда.
4 запрос - 3 секунда.
5 запрос - 3 секунда.
6 запрос - 4 секунда.

5 запрос не должен пройти, т.к он считается слишком частым. Можно это как-то реализовать?
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Re: Ограничение количество запросов

Сообщение Александр » 22 фев 2013, 16:25

manticore
  1. SELECT count(*) FROM table_name WHERE ip=111 AND time>NOW()-5
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

След.

Вернуться в Программирование на PHP и других языках (без использования API)



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron