Как бы отсечь украинский трафик

Тема в разделе "Как сделать...", создана пользователем laszlo, 28 июл 2009.

Статус темы:
Закрыта.
  1. laszlo

    laszlo Постоялец

    Регистр.:
    16 фев 2008
    Сообщения:
    74
    Симпатии:
    38
    Вобщем мне надо перенаправить украинский траф

    ТДС не подходят из-за перезагруженности сервера ну и еще по некоторым причинам
    Все что связано с доп нагрузкой на мускул - тоже - это я про гео
    Придумал примерно такое решение - по языку браузера

    если в substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,5)
    присутствует к примеру ru
    уходим на ру вариант

    А как вот отсечь украинцев,
    UA?
    Или еще есть варианты, типа ua_UA и тп...

    Код:
    $lang=substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,5);
    if ((substr_count($lang,"ua")==0) or (substr_count($lang,"UA")==0))
    {
    echo "Goditsa";
    }
    
    Хотя, наверное, этого будет достаточно..
     
  2. incognet

    incognet Создатель

    Регистр.:
    17 сен 2007
    Сообщения:
    41
    Симпатии:
    4
    Лучше и надежнее по IP ибо HTTP_ACCEPT_LANGUAGE могут пользователи и ru подставит а IP уж не поменяешь, если только не через анонимные прокси.
    В интернете есть свободные (бесплатные) базы IP адресов стран и городов, можно её заюзать без проблем.
     
  3. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    geoIP вообще-то мускул не дергает. В самой-самой стандартной поставке у тебя будет geoip.dat размером аж 1 мегабайт. Который после первого же обращения целиком ляжет в кеш и будет работать вообще не трогая винт.

    Если ты все же боишься, что когда-нибудь он нет-нет да и выгрузится из кеша - выдели память вручную. Через shmem, через memcached, через как хочешь. 1 мегабайт - это слезы. Повозиться конечно придется, но не так чтоб очень. Зато потом у тебя вообще будет фактически бинарный поиск по массиву - это очень быстро и совсем без накладных расходов. И мускул свободен.

    И перед тем как рассказывать про высоконагруженность сервера, возьми и замерь, сколько раз в секунду выполняется geoip_country_code_by_addr(). В стандартной поставке, без всяких "ускорителей".
     
  4. AlexSuv

    AlexSuv Постоялец

    Регистр.:
    29 мар 2007
    Сообщения:
    117
    Симпатии:
    21
    Ну вот через сервис http://blockacountry.com/ можно вообще заблочить, или бери оттуда маски украинские и создавай правила для htacces переадресации

    Бегло как-то так будет
    RewriteCond %{remote_addr} 62.64.64.0/18 [OR]
    RewriteCond %{remote_addr} 62.80.160.0/19 [OR]
    .... другие укр маски
    RewriteRule ^/$ /ukr.html
     
  5. sw0rdf1sh

    sw0rdf1sh Создатель

    Регистр.:
    2 апр 2007
    Сообщения:
    41
    Симпатии:
    7
    блокировать юзеров или еще что либо с ними делать в зависимости от языка в настройках браузера не лучшее решение, к примеру я всегда ставлю английские версии программ потому что меня бесит русский перевод, то есть я к примеру если был бы сейчас в Киеве и с ноута пришел на твой сайт, ты бы меня выкинул


    качай бесплатный GeoIP http://www.maxmind.com/app/geolitecountry тут примеры как использовать саму базу http://www.maxmind.com/app/api насчет производительности смотри тут http://www.maxmind.com/app/benchmark
     
    laszlo нравится это.
  6. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197

    сам таким способом отсекал весь траф кроме русского очень производительная штука, базы на шару регулярно обновляют
     
Статус темы:
Закрыта.