Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 23/12/04 в 14:03 |
Есть список IP (как отдельные адреса, так и подсетки), список довольно объемный. Как/чем средиректить юзверей с этитми ИП так, что-бы не сильно нагружать сервак ?
|
|
|
|
/dev/awm
С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127
|
Добавлено: 23/12/04 в 14:15 |
думаю .htaccess - самый быстрый способ
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 23/12/04 в 14:26 |
При списке в 2000-3000 записей ? С учетом того, что на страницах много графики (по 200 с лишним графических элементов) - нагрузка на сервак основательная получается.
Хотя... Как ограничить область проверки 3-мя файлами (они лежат в корне домена) - кто подскажет ?
И как в htacces по подсетям редирект организовать ?
|
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 23/12/04 в 16:08 |
Sams писал: | Есть список IP (как отдельные адреса, так и подсетки), список довольно объемный. Как/чем средиректить юзверей с этитми ИП так, что-бы не сильно нагружать сервак ? |
я делаю на пхп :
Код: |
$net = substr($_SERVER["REMOTE_ADDR"], 0,strpos($_SERVER["REMOTE_ADDR"], "."));
if ($net == '61' || $net == '202'|| $net == '203'| $net == '210'| $net == '211'| $net == '218'| $net == '219'| $net == '219')
{ header("Location: $url"); exit;}
|
как будет работать со списком в 2000 - 3000 я не знаю ...
|
|
|
|
С нами с 11.12.04
Сообщения: 99
Рейтинг: -344
|
Добавлено: 23/12/04 в 17:43 |
Можешь попробовать вот такой вариант:
Код: |
$ipdata_file = "ipdata.dat"; // file with ip's
$url = "http://www.yahoo.com"; // url to redirect
function getIP()
{
@$ip;
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "Unknown";
return $ip;
}
function check($ipvalue)
{
global $ip_ar;
$ipv_ar = explode('.',$ipvalue,4);
for ($i=0; $i<4; $i++)
if (isset($ip_ar[$i],$ipv_ar[$i]) && $ipv_ar[$i]!='*')
{
if ($ip_ar[$i]!=$ipv_ar[$i]) return false;
}
return true;
}
$ipdata = file($ipdata_file);
$ip = GetIP();
if ($ip!=="Unknown")
{
$ip_ar = explode('.',$ip,4);
foreach ($ipdata as $ipvalue)
if (check(trim($ipvalue)))
{
header("Location: $url");
exit;
}
}
|
пример файла с апи: (без пустых строк)
1.2.3.4
5.6.7.8
9.10.11.*
127.0.0
11.*.12.255
219.*.*.*
218
то есть для подсетей можно использовать * или просто не писать. Звездочкой будет лучше.
|
|
|
|
/dev/awm
С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127
|
Добавлено: 23/12/04 в 18:18 |
Sams писал: | При списке в 2000-3000 записей ? С учетом того, что на страницах много графики (по 200 с лишним графических элементов) - нагрузка на сервак основательная получается.
Хотя... Как ограничить область проверки 3-мя файлами (они лежат в корне домена) - кто подскажет ?
И как в htacces по подсетям редирект организовать ? |
в случае с .htaccess мало кого трогает сколько там графических файлов, т.к. редирект будет происходить ДО отдачи контента браузеру.
а по поводу нагрузки - если ты считаешь что запуск интерпретатора php или perl с парсингом списка из 2-3К записей будет работать быстрее чем скомпилированный (!) апач - то не используй .htaccess :)
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 23/12/04 в 20:42 |
JpS писал: | в случае с .htaccess мало кого трогает сколько там графических файлов, т.к. редирект будет происходить ДО отдачи контента браузеру. |
Проблема в том, что апач проверяет все правила из htaccess при каждом обращении к каждому файлу. Т.е. если чела не редиректит (а таких как-никак 85%), то при отдаче каждого графического элемента апач выполняет проверку
JpS писал: | а по поводу нагрузки - если ты считаешь что запуск интерпретатора php или perl с парсингом списка из 2-3К записей будет работать быстрее чем скомпилированный (!) апач - то не используй .htaccess |
Отнюдь так не считаю. Но htaccess - тоже достаточно ресурсоемкий вариант.
|
|
|
|
/dev/awm
С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127
|
Добавлено: 23/12/04 в 20:45 |
ну точно так же при любом другом варианте эти 85% тоже надо прочекать. мне по прежнему кажется что запускать интерпретатор - это более ресурсоемко.
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 23/12/04 в 22:01 |
JpS писал: | ну точно так же при любом другом варианте эти 85% тоже надо прочекать. |
Не совсем так. При скриптовом решении я могу проверять один раз - при запросе страницы (без проверки на каждом элементе графики). Но делать это надо не на пхп/перле. Или с какими-то изъеб..и.
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 23/12/04 в 22:03 |
Lamagro писал: | я делаю на пхп :
Код: |
$net = substr($_SERVER["REMOTE_ADDR"], 0,strpos($_SERVER["REMOTE_ADDR"], "."));
if ($net == '61' || $net == '202'|| $net == '203'| $net == '210'| $net == '211'| $net == '218'| $net == '219'| $net == '219')
{ header("Location: $url"); exit;}
|
как будет работать со списком в 2000 - 3000 я не знаю ... |
ОЧЕНЬ медленно. Проверено.
|
|
|
|
/dev/awm
С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127
|
Добавлено: 23/12/04 в 22:14 |
ну так и в .htaccess ты можешь на картинки это правило не ставить.
если чел не загрузит html (ну или php, чо там у тебя), то и графику грузить не будет.
если ты скажешь что боты могут сами картинки хавать, то я предупреждая такой твой ответ, скажу, что и в случае со скриптом тоже самое может произойти.
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 23/12/04 в 22:26 |
JpS писал: | ну так и в .htaccess ты можешь на картинки это правило не ставить. |
Апач один фиг выполняет хотя-бы первую проверку (на соответсвие типа файла)
|
|
|
|