1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Альтернативный способ получения информации

Тема в разделе 'PW Web', создана пользователем Botchal, 1 май 2012.

  1. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Решил поделиться альтернативным способом получения информации о персонажах, кланах и городах для топов.

    Для начала нужно создать 12 таблиц в MySQL у вас на сайте. 6 таблиц основных и 6 временных. Временные таблицы типа MEMORY нужны для быстрого INSERT'a.
    Ну а с основными вы будете работать из ваших скриптов, так как персонажей может быть очень много рекомендую расставить индексы в основных таблицах, индексы во временных ставить не нужно.

    SQL код таблиц для вашего сайта.




    Перенос информации состоит из 2 частей:
    1) Выполнение команд gamedbd на игровом сервере
    2) Запись полученной информации в MySQL

    Если коротко всё выглядит так: Crontab у вас на сайте вызывает скрипт который получает информацию от скрипта у вас на сервере и заносит в базу. Для понимания условно назовём их скриптами для сайта и скриптами для сервера.

    Пример серверного скрипта:
    Где /pwserver/gamedbd/ путь до gamedbd от корня сервера. Для проверки наберите в терминале /pwserver/gamedbd/gamedbd /pwserver/gamedbd/gamesys.conf listrole если выдаст - значит правильно.
    Назовём его server.php, в зависимости от GET параметра скрипт будет выполнять ту или иную команду и выводить полученную информацию. Этот скрипт живёт у вас на сервере с игровым серверов в директории www.

    Более подробно с командами gamedbd вы можете ознакомиться набрав в Яндексе "gamedbd команды" там ссылка в первых пяти позициях с заголовком - Gamedbd Модуль-игровой-базы-данных
    всё подробно описано.

    Для того, чтобы PHP скрипт мог выполнять команды, вам необходимо прописать права на директорию с сервером

    Код:
    chmod -R 777 /pwserver/
    где /pwserver/ - директория вашего сервера. если сервер живёт в 2 директориях например в PWServer и в home, то прописать как на /home/ так и на /PWServer/

    С серверным скриптом разобрались, теперь пример скриптов для сайта, в кронтабе я использую утилиту php5 вместо wget так как wget у меня создаёт побочные файлы, и это никак не убрать.
    Но через php5 нельзя передать GET параметры, поэтому необходимо для каждой команды сделать отдельный скрипт.


    php код скриптов для сайта (создать и залить на сайт). В коде изменить 255.255.255.255 на ваш IP-адрес
    и вписать в $db = new mysqli("", "", "", ""); хост, юзер, пасс, название базы для подключения к MySQL у вас на сайте.
    Данные скрипты будут брать информацию от скриптов с вашего сервера по средству file_get_contents(), заносить в MySQL данные.

    listcity.php - для информации о территориях и их владельцах





    listfaction.php - инфо о кланах



    listfactionuser.php - инфо о мемберах кланов





    listrole.php - персонажи




    listrolebrief.php - персонажи коротко



    listuserbrief.php - голд и ещё инфа


    Эти скрипты можно повесить на крон как я уже сказал, а можно вызывать руками.
    Для того, чтобы проверить работает ли система, вам нужно набрать в вашем браузере

    Код:
    http://255.255.255.255/server.php?db=listrole
    если вы прописали права и правильно указали путь до директории с gamedbd, то вы увидите нечто вроде


    Если экран пустой - значит вы либо не прописали права либо указали не верно пути до gamedbd в server.php

    Теперь проверим занесение в MySQL у вас на сайте. Запросим через браузер скрипт

    http://you_site.ru/listrole.php

    Это тот скрипт что вы создали и залили. Для отладки добавте в начало скрипта
    Код:
    ini_set('display_errors','On');
    сразу после <?php через пробел или на следующей строчке, это поможет увидеть ошибки вывод которых по умолчанию отключён. Быть может у вас отключена file_get_contents(), нужно капнуть php.ini, подробности в яндексе.

    Если ошибок нет, то можно смотреть наши таблицы в MySQL. Там данные. Ну а что с этими данными делать сами решайте, можно топ - http://www.pw-projec...p?name=listrole можно онлайн по классам - http://www.pw-projec...name=listonline или ещё что другое.

     
    Denis-root, Тыщ, Mr.Fleks и 17 другим нравится это.
  2. SineD Пользователи

    Сообщения:
    31
    Лайки:
    1
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Nevermind PW
    хоть у кого то получилось запустить?
  3. BadGuy Заблокированные

    Сообщения:
    0
    Лайки:
    0
    Репутация:
    0
    Команда:
    DLT
    У ботча
  4. SineD Пользователи

    Сообщения:
    31
    Лайки:
    1
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Nevermind PW
    кэп с нами
    а серьезно, ботч походу ты 1 смог запустить...
  5. BadGuy Заблокированные

    Сообщения:
    0
    Лайки:
    0
    Репутация:
    0
    Команда:
    DLT
    приобрети себе прямые руки, даже по инструкции сделать не можешь
  6. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    в чём конкретно проблемы, не выводит или не заносит?
  7. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    эхх, выводило бы ещё
    Код:
    read tablename roleid
    , вообще полностью переписали бы базу. А то только через терминал видно, ктонить копал?
  8. maksimillian Define!!!11 Пользователи

    Сообщения:
    88
    Лайки:
    25
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Diamond
    Отлично, у меня поперло. Правда тестировал на 1 3 6 сервере (некоторые значения не выводились). Но в целом работает.

    Вот что думаю: на сервере таблицы все в bdb (Berkeley DB). На PHP пробовал мутить с dbm процедурами (нашел в интернете, что эти процедуры работают с BDB), кое-что получилось, но незначительно. На жуке тему про это видел, там даже приводились библиотеки для C++ и java, но у меня с этим худо.
    1 человеку нравится это.
  9. maksimillian Define!!!11 Пользователи

    Сообщения:
    88
    Лайки:
    25
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Diamond
    Ботч, я нашел способ.

    root@Server:/home/gamedbd# ./gamedbd gamesys.conf read base 32 2> ~/out.log
    По идее это 2 поток в команде.


    Сие чудо вывело в файл как раз тот вывод, что был в консоле:
    1 строка compressed data
    2 строка decompressed data
    1 человеку нравится это.
  10. 1vitek1 Пользователи

    Сообщения:
    31
    Лайки:
    15
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Life-PW
    Ботч, оформление на сайте, данных примеров, как я понимаю сами делали?
  11. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    ясен пень сам) т.е. банальные иконки и то сам спиздил сохранил с pwi
  12. maksimillian Define!!!11 Пользователи

    Сообщения:
    88
    Лайки:
    25
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Diamond
    Слухай, ну вот добились мы получения этих чудных байтов.
    Как их изменять-то (на сервере)? :) Есть способ как-нибудь без пакетов или jsp?
  13. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Только чтение. Для занесения - сокет.

    ОФФТОП:


    А эти чудные байты - для прочей информации, например экипировка, коты в игре, почтовый ящик в игре, друзья в игре, чат, инвентарь, квесты. И это всё будет также доступтно из MySQL. То, что с этими данными, расфасованными по полочкам, делать, ограничивается лиш фантазией.

    Тоесть мы получаем нормальное чтение. Запись происходит на много реже, тоесть только при редактировании персонажа, при отправке вещей по почте итд, вот тут опасаться нечего и можно использовать сокеты.

    Вот собсно такая идея.
    1 человеку нравится это.
  14. BadGuy Заблокированные

    Сообщения:
    0
    Лайки:
    0
    Репутация:
    0
    Команда:
    DLT
    Вот еще бы отправить измененные данные на сервер, а это вроде PutRoleData.
  15. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    хмм, ну значит ещё проще
  16. maksimillian Define!!!11 Пользователи

    Сообщения:
    88
    Лайки:
    25
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Diamond
    В продолжение темы:
    В JSP все на яве же, на PHP тоже яву можно подключить ==> Еще один вариант получения информации. По--моему самый быстрый. Хотя не уверен.
  17. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    да блин)) айвэб также подключается к 29400, если работать через сокет то уж без посредников.

    ЗЫ тема про получение информации
  18. SviT Наш человек Old school Пользователи

    Сообщения:
    219
    Лайки:
    142
    Репутация:
    0
    Спасибо очень интересная инфа.
  19. exclementos Пользователи

    Сообщения:
    10
    Лайки:
    5
    Пол:
    Мужской
    Репутация:
    0
    Все это интересно но вот у меня такая проблема установил все прописал. захожу на экран он белый. искал все пути все норм. заглянул в логи апача и был немного удивлен, выполня в браузере http://my_ip/server.php?db=listrole
    апачи выкидывает в логах err : Initialize storage environment failed. Как буд то навернулась база но она работает и все норм. при запросе из консоле выдает все данные.
  20. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    попробуй вместо команды к gamedbd просто vmstat, если выведет - значит всё нормально с использованием системных команд и надо таки прописать права, если нет, то копай php.ini, на самом деле я не знаю, что может означать Initialize storage environment failed. и почему это вообще в логах апача Оо а не gamedbd

    ini_set('display_errors','On'); поставил?
Черновик сохранён Черновик удалён
Similar Threads
  1. mr.x
    Ответов:
    1
    Просмотров:
    2.108
  2. alexdnepro
    Ответов:
    23
    Просмотров:
    15.926
  3. maestro199
    Ответов:
    3
    Просмотров:
    1.250
  4. romanmilk
    Ответов:
    14
    Просмотров:
    1.729
  5. Minimum
    Ответов:
    14
    Просмотров:
    2.161
Загрузка...

Поделиться этой страницей