Zend FrameWork 2 и геотаргетинг

Опубликовано admin - пн, 12/24/2012 - 17:33

Расскажу про геотаргетинг и как его встроить в приложения на Zend Framework 2. Геотаргетинг - это определение местоположения пользователя на основе его персональных данных, ip д.р. способы. В статье я буду рассказывать про геотаргетинг с использованием ip адреса и сервиса ipGeoBase - http://ipgeobase.ru/.

Что нужно для геотаргетинга.

Основную работу при определении местоположения пользователя будет выполнять класс "Geo". Его инициализация внутри действия контроллёра выглядит следующим образом:

Этот код нужно расположить внутри нужного действия Вашего контроллёра, например:

Класс Geo будет плагином Zend Frmework 2, для того чтобы к нему обращаться как плагину, его необходимо подключить в файле module.config.php для модуля Zend Framework, я делаю это следующим образом, подключая его вместе с другими модулями в моём приложении:

Подключив плагин в конфигурационном файле, его необходимо правильно разместить по адресу: "Application\Controller\Plugin\Geo\Geo.php" - соответствие шаблону "Application\Controller\Plugin\Geo\Geo". Весь пример плагина Geo, подробное объяснение указанно после этого листинга.

Основные функции объясняются подробно в комментариях, однако подробно объясню отдельно функцию "getpgAdapter()". Функция создаёт экземпляр класса подключения к базе данных (Adapter), создаётся он на основе конфигурационных данных содержащихся в файлах, как правило это файл "config\autoload\global.php", согласно документации:

"It is important to know that by using this style of adapter creation, the Adapter will attempt to create any dependencies that were not explicitly provided. A Driver object will be created from the configuration array provided in the constructor. A Platform object will be created based off the type of Driver object that was instantiated. And lastly, a default ResultSet object is created and utilized. Any of these objects can be injected, to do this, see the next section."

Ещё хотелось объяснить интересную функцию "get_geobase_data", по сути это модифицирлваннфый вариант скрипта скаченного с сайта ipgeobase, за исключением того, что мы помещаем данные в базу (о чём будет рассказано после следующего листинга), а после этого используем их для наших целей, согласитесь, поиск по базе данных с индексированным столбцами намного быстрее и удобнее чем работа с xlm данными, хотя скрипт написан таким образом, что когда в базе не находится нужный регион, происходит обращение к xml файлу с официального сайта - ipgeobase, с надеждой найти данные там.

Как я и обещал, ниже приведён файл который может использоваться для обновления данных содержащихся в базе, поместите этот файл в директорию, скрытыю от публичного доступа.

Config.php

После этого осталось создать запись в файле crontab "05 04 * * * /usr/bin/php /var/www/jquery/data/parser/index.php >/dev/null 2>&1"

Полученные данные в нашем действии, о котором мы писали ранее (indexAction), будут содержаться в переменных $region и country. В примере выполняются два запроса, в действительности хватает одного запроса через функцию get_value('', false), которая будет содержать массив данных.

На разработку сайта! Скидки до 20%!