Файл: vigre/readme.txt
Строк: 77
Роботы для получения голосов с сервера
vigre.su
Общее описание
Данных архив
содержит php файлы двух роботов: робота
получения голосов с сервера vigre.su и
робота доставки бонусов за голосования.
Для работы роботов необходимы php 5.x или
выше и mysql 4.x или выше.
Описание файлов
1.
config.php – Конфигурационный файл с
настройками необходимыми для работы
робота и скрипта test.php. Необходимо
редактировать перед началом работы
роботов.
2. bonus.php – Файл, реализующий
логику выдачи бонуса за голосование.
Функция vgrInt_deliverBonusInit должна быть
реализована разработчиком игры.
Необходимо редактировать перед началом
работы роботов.
3. votes_bot.php – Робот
получения голосов с сервера vigre.su. Не
менять. Это запускаемый файл робота.
4.
bonus_bot.php – Робот доставки бонусов за
голосования. Не менять. Это запускаемый
файл робота.
5. common.php – Общие функции
используемые роботами. Не менять.
6. test.php
– Скрипт для добавления тестовых данных
голосований. Не менять. Удалить после
тестирования!
7. test.xml – XML файл с
тестовыми данными. Используется
скриптом test.php. Удалить после
тестирования!
8. readme.txt –
Документация.
Робот получения голосов
votes_bot.php
Данный робот отсылает http запрос
на сервер vigre.su и получает список
проголосовавших за игру и пишет
полученные данные в базу данных. Для
настройки робота откройте файл config.php и
установите следующие параметры:
1.
VGR_INT_GAME_ID: Идентификатор игры в системе
vigre.su. Целое число, смотри в личном
кабинете на сайте vigre.su
2. VGR_INT_SEC_KEY:
Секретный ключ игры, смотри в личном
кабинете на сайте vigre.su
3. VGR_INT_VOTES_SQL_SERVER_HOST:
IP адрес mysql сервера для хранения голосов
4. VGR_INT_VOTES_SQL_SERVER_DB: База данных для
хранения голосов
5. VGR_INT_VOTES_SQL_SERVER_USER: Имя
пользователя для доступа к базе голосов.
Должен иметь права на выполнение select,
insert, update, create table.
6. VGR_INT_VOTES_SQL_SERVER_PASS:
Пароль для доступа к базе голосов
Все
данные о голосовании сохраняются на mysql
сервере в базе данных в кодировке UTF-8.
Запуск робота возможен не чаще, чем один
раз в 5 минут. Для запуска робота
предлагается использовать cron (Linux) или
планировщик задач (Windows). 2 и более робота
votes_bot.php одновременно работать не могут.
Робот votes_bot.php может одновременно
работать с роботом bonus_bot.php.
Робот
получения бонусов за голосования
bonus_bot.php
Данный робот считывает данные о
голосах из базы данных, полученные
роботом votes_bot.php, и доставляет бонус за
голосования.
Для настройки робота
откройте файл config.php и установите
следующие параметры:
1. VGR_INT_GAME_ID:
Идентификатор игры в системе vigre.su. Целое
число, смотри в личном кабинете на сайте
vigre.su.
2. VGR_INT_SEC_KEY: Секретный ключ игры,
смотри в личном кабинете на сайте vigre.su.
3.
VGR_INT_VOTES_SQL_SERVER_HOST: IP адрес mysql сервера для
хранения голосов.
4. VGR_INT_VOTES_SQL_SERVER_DB: База
данных для хранения голосов
5.
VGR_INT_VOTES_SQL_SERVER_USER: Имя пользователя для
доступа к базе голосов. Должен иметь
права на выполнение select, insert, update, create
table.
6. VGR_INT_VOTES_SQL_SERVER_PASS: Пароль для доступа
к базе голосов.
Если при доставке бонус
необходимо открывать соединение с базой
данных игрового сервера, то настроить
дополнительные параметры:
7.
VGR_INT_GAME_SQL_SERVER_HOST: IP адрес mysql сервера
игры.
8. VGR_INT_GAME_SQL_SERVER_DB: База сервера
игры.
9. VGR_INT_GAME_SQL_SERVER_USER: Имя пользователя
для доступа к базе
игры.
10.VGR_INT_GAME_SQL_SERVER_PASS: Пароль для
доступа к базе игры.
Параметры 1-6
устанавливаются одни и те же для роботов
votes_bot.php и bonus_bot.php. Параметры 7-10 для работы
робота votes_bot.php не нужны.
После настройки
параметров в файле config.php необходимо
открыть файл bonus.php и реализовать логику
доставки бонуса в функции vgrInt_deliverBonus,
смотри следующий раздел.
Реализация
функции доставки бонуса vgrInt_deliverBonus
/**
*
Шаблон для доставки бонуса за
голосование
*
* @param int $voteId ID голоса
* @param
int $voteDate Дата голоса в формате unixtime
* @param
string $voteIp IP голоса
* @param string $voteChar Имя чара
(не null)
* @param int $sms Голосование через SMS (1
или 0)
*
* @return bool Удача/Неудача
* В случае
удачи статус голоса устанавливается как
* VGR_CORE_INT_VOTE_STATUS_BONUS_RECEIVED
* и в следующий
раз бонус за этот голос не зачисляется,
*
в случае неудачи статус голоса не
меняется,
* и робот попытается доставить
бонус во время следующего запуска
*
*
Все строковые параметры в кодировке utf-8
БЕЗ mysql экранирования
*
* Для
логирования можно использовать функцию
vgrInt_printMessage,
* смотри описание в common.php
*
*/
function vgrInt_deliverBonus($voteId, $voteDate, $voteIp, $voteChar,
$sms)
{
$voteId = intval($voteId);
$voteDate = intval($voteDate);
$sms =
intval($sms);
/**
* Здесь нужно реализовать
логику по доставке бонуса
*/
return true;
}
В
файле bonus.php есть так же 2 функции, которые
вызываются один раз при работе робота
bonus_bot.php. При необходимости можно
поменять реализацию этих 2-х функций.
/**
*
Вызывается только один раз в начале
работы робота
* Открывает sql соединение с
БД игрового сервера
*
*/
function
vgrInt_deliverBonusInit()
{
try
{
vgrInt_openGameSQLConnection();
}
catch
(Exception $e)
{
vgrInt_printMessage(null, VGR_INT_MESSAGE_WARN,
$e->getMessage());
}
}
/**
* Вызывается только
один раз при окончании работы робота
*
Закрывает sql соединение с БД игрового
сервера
*
*/
function
vgrInt_deliverBonusDeinit()
{
vgrInt_closeGameSQLConnection();
}
Внимание!
Один и тот же персонаж может получать
бонус не раньше, чем раз в сутки! Бонус за
дополнительные голоса для персонажа
начислен не будет! Если в данных
голосования нет имени персонажа, то
бонус для такого голоса не
начисляется
Для запуска робота
предлагается использовать cron (Linux) или
планировщик задач (Windows). 2 и более робота
bonus_bot.php одновременно работать не могут.
Робот votes_bot.php может одновременно
работать с роботом bonus_bot.php.
Добавление
тестовых данных о голосованиях
Для
добавления тестовых данных о
голосованиях используется скрипт test.php.
Этот скрипт считывает данные о
голосованиях из XML файла test.xml и пишет их
в базу данных голосованиях, точно так же
как это делает робот votes_bot.php. При этом
дата голосования для голоса
устанавливается как локальное время
выполнения скрипта test.php, а IP адрес
устанавливается как 127.0.0.1. Файл test.php
может быть использован для добавления
тестовых данных, необходимых для отладки
робота bonus_bot.php. Ниже приведен формат
данных файла test.xml:
<!--
XML Файл с
тестовыми данными
-->
<root>
<votes>
<vote>
<char>
<![CDATA[character1]]>
</char>
</vote>
<vote>
<char>
<![CDATA[character2]]>
</char>
</vote>
<vote>
<char>
<![CDATA[character3]]>
</char>
</vote>
<vote>
<char>
<![CDATA[character4]]>
</char>
</vote>
</votes>
</root>
Данные внутри
CDATA секции тэга <char> соответствуют
имени персонажа. Для добавления тестовых
данных достаточно отредактировать
содержимое файла test.xml и выполнить скрипт
test.php. Настроечные данные скрипта test.php
находятся в файле config.php:
1.
VGR_INT_VOTES_SQL_SERVER_HOST: IP адрес mysql сервера для
хранения голосов.
2. VGR_INT_VOTES_SQL_SERVER_DB: База
данных для хранения голосов
3.
VGR_INT_VOTES_SQL_SERVER_USER: Имя пользователя для
доступа к базе голосов. Должен иметь
права на выполнение select, insert, update, create
table.
4. VGR_INT_VOTES_SQL_SERVER_PASS: Пароль для доступа
к базе голосов.
Внимание! После
окончания тестирования и настройки
роботов необходимо удалить файлы test.php и
test.xml!
Примечания
Оба робота пишут в
журнал событий о своей работе, используя
echo
Ошибка «Предыдущий робот еще
работает» означает, что робот еще не
закончил свою работу и 2-й экземпляр
робота не может быть запущен. Если вы
уверены, что робот в действительности
«повис» (например, при аварийной
перезагрузке сервера), то можно снять
блокировку, выполнив sql запрос в базе
данных голосов:
• для робота получения
голосов: delete from vigre_votes_bot where type=1;
• для
робота доставки бонусов: delete from vigre_votes_bot
where type=2;
Очистка данных
Для удаления
всех данных базы данных голосований
используйте SQL запрос:
TRUNCATE vigre_bonus;
TRUNCATE
vigre_votes;
TRUNCATE vigre_votes_bot;