OpenX и проблема геотаргетинга - PullRequest
5 голосов
/ 14 сентября 2010

Я скачал последнюю версию OpenX 2.8.6 и пытаюсь настроить геотаргетинг, но он не работает.Я включил геотаргетинг в панели администрирования (Конфигурация -> Глобальные настройки -> Тип модуля геотаргетинга -> Разум OpenX Max (плоский файл)).Я прочитал в документации OpenX, что нет необходимости указывать какой-либо путь к базе данных в настройках плагина, поэтому я попытался без него.Я установил параметры доставки тестового баннера, который будет показан только в Сербии.Я обновляю страницу, на которой отображаются баннеры, но этот баннер никогда не показывается.

Я подумал, что, возможно, проблема в старой базе данных и что мой IP-адрес не распознан, поэтому я загрузил последнюю базу данных (.datфайл) из MaxMind (облегченная версия базы данных Country) и укажите путь в настройках плагина, но он все равно не работает.

Может кто-нибудь помочь мне, как решить эту проблему?

1 Ответ

5 голосов
/ 27 января 2011

У меня была такая же проблема. Похоже, что OpenX начиная с версии 2.8.x использует собственный читатель GeoIP-Database на основе php (например, параметр «flatfile» в настройках) вместо использования модуля geoip - который, похоже, не работает с текущим GeoIP.dat

Чтобы решить эту проблему, я сделал следующее:

1) открыть плагины / геотаргетинг / oxMaxMindGeoIP / oxMaxMindGeoIP.delivery.php

2) поиск:

    if (isset($GLOBALS['_MAX']['GEO_IP'])) {
        $ip   = $GLOBALS['_MAX']['GEO_IP'];
        OX_Delivery_logMessage('['.$ip.'] : ip from cookie. Plugin_geoTargeting_oxMaxMindGeoIP_oxMaxMindGeoIP_Delivery_getGeoInfo', 7);
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
        OX_Delivery_logMessage('['.$ip.'] : ip from remote addr. Plugin_geoTargeting_oxMaxMindGeoIP_oxMaxMindGeoIP_Delivery_getGeoInfo', 7);
    }
    $aGeoConf = (is_array($conf['oxMaxMindGeoIP'])) ? $conf['oxMaxMindGeoIP'] : array();

3) вставить ниже:

$ret = array(
    "country_code" => $_SERVER['GEOIP_COUNTRY_CODE']
);
return $ret;

4) сохранить и сделать

Вы можете найти возможные возвращаемые значения в заголовке функции:

 * @return array An array(
 *                  'country_code',
 *                  'region',
 *                  'city',
 *                  'postal_code',
 *                  'latitude',
 *                  'longitude',
 *                  'dma_code',
 *                  'area_code',
 *                  'organisation',
 *                  'isp',
 *                  'netspeed'
 *              );
 */

Прочтите свой module-doc (из mod_geoip), как получить геоданные с текущего (или заданного) IP. В моем примере выше я использую lighttpd 1.5 + mod_geoip (неофициальный модуль). Но это исправление также должно работать с apache_note / pecl-geoip / mod_geoip env ...

Да, и кстати. Конечно, гораздо быстрее полагаться на mod_geoip, который кэширует базу данных в памяти, чем делать все это через php при каждом запросе (как это делает openx).

...