Автор Тема: Нужно облегчить игру  (Прочитано 15298 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Falcon

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://stavatar.by.ru
Нужно облегчить игру
« : 15 Января 2005, 18:35:30 »
Есть у нас онлайн проэкт "Сказ о Змие Горыныче" http://zmiy.iswith.us/
Это просто педеланная на словянский мотив буржуйская игра Logd.
Проблема в том что в игре очень много обращенийк БД и если играет порядка 80-ти человек одновременно то сервак не выдерживает нагрузки.
Сейчас мы занимаемся переделкой http://www.mikportal.org/forum/index.php?showtopic=5237&view=getnewpost
и у меня возникают вопросы. как сделать чтобы игра поддерживала как можно больше народа одновременно?

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Нужно облегчить игру
« Ответ #1 : 16 Января 2005, 09:01:45 »
Цитировать
Falcon:
очень много обращенийк БД

код в студию! (или это не моя фраза?)
LJ: Backslashed life (rss)

Оффлайн Falcon

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://stavatar.by.ru
Нужно облегчить игру
« Ответ #2 : 26 Января 2005, 01:59:42 »
Вот пример. Скрипты дл работы с базой. Может что то можно убрать? Или сменить.

//do some cleanup here to make sure magic_quotes_gpc is ON, and magic_quotes_runtime is OFF, and error reporting is all but notice.
error_reporting (E_ALL ^ E_NOTICE);

// magic_quotes_gpc - автоматическая обработка кавычек и апострафов
// если она отключено, то экранируем кавычки вручную
if (!get_magic_quotes_gpc())
{
        set_magic_quotes($_GET);
        set_magic_quotes($_POST);
        set_magic_quotes($_SESSION);
        set_magic_quotes($_COOKIE);
        set_magic_quotes($HTTP_GET_VARS);
        set_magic_quotes($HTTP_POST_VARS);
        set_magic_quotes($HTTP_COOKIE_VARS);
        ini_set("magic_quotes_gpc",1);
}

// заключать ли данные в автокавычки во время выполнения
set_magic_quotes_runtime(0);

// функция экранирования кавычек
function set_magic_quotes(&$vars)
{
       if (is_array($vars))
       {
                reset($vars);
                while (list($key,$val) = each($vars))
                        set_magic_quotes($vars[$key]);
       }
       else
       {
                $vars = addslashes($vars);
       }
}

// тип базы данных
define(\'DBTYPE\',"mysql");

$dbqueriesthishit=0;

// формирует запрос к базе данных
function db_query($sql)
{
        global $session, $dbqueriesthishit;
        $dbqueriesthishit++;
        $fname = DBTYPE."_query";
        $r = $fname($sql) or die(($session[user][superuser]>=3 || 1?"
".HTMLEntities($sql)."
":"").db_error(LINK));
        return $r;
}

// в случае ошибки выводит сообщение
function db_error($link)
{
        $fname = DBTYPE."_error";
        $r = $fname($link);
        return $r;
}

// извлекает каждую строку из результируемого набора и возвращает его в виде ассоциативного масива
function db_fetch_assoc($result)
{
        $fname = DBTYPE."_fetch_assoc";
        $r = $fname($result);
        return $r;
}

// количество записей
function db_num_rows($result)
{
        $fname = DBTYPE."_num_rows";
        $r = $fname($result);
        return $r;
}

// возвращает число затронуиых прошлой операцией рядов
function db_affected_rows($link=false)
{
        $fname = DBTYPE."_affected_rows";
        if ($link===false)
        {
                $r = $fname();
        }
        else
        {
                $r = $fname($link);
        }
        return $r;
}

// соединяемся с базой данных
function db_pconnect($host,$user,$pass)
{
        $fname = DBTYPE."_pconnect";
        $r = $fname($host,$user,$pass);
        return $r;
}

// выбираем базу данных
function db_select_db($dbname)
{
        $fname = DBTYPE."_select_db";
        $r = $fname($dbname);
        return $r;
}

// освобождаем память
function db_free_result($result)
{
        $fname = DBTYPE."_free_result";
        $r = $fname($result);
        return $r;
}
?>

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Нужно облегчить игру
« Ответ #3 : 26 Января 2005, 10:27:02 »
очень много лишнего, но ничего критичного.

Оффлайн Antoxa

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 64
  • +0/-0
  • 0
    • Просмотр профиля
Нужно облегчить игру
« Ответ #4 : 26 Января 2005, 11:00:47 »
php fastcgi(отдельно для обработки игры, чтобы сильно много не плодить процессов) + _pconnect

и уже полегче буддет, хотя не особо :)

собсна радикальное решение - не лазить в базу почти никогда.
юзать memcache, или демона наколбасить на пхп хотябы.
AnToXa - born programmer

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Нужно облегчить игру
« Ответ #5 : 26 Января 2005, 16:06:01 »
Цитировать
Antoxa:
+ _pconnect

Уверен?
LJ: Backslashed life (rss)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Нужно облегчить игру
« Ответ #6 : 26 Января 2005, 16:29:11 »
CGVictor исчезни

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Нужно облегчить игру
« Ответ #7 : 26 Января 2005, 16:54:57 »
RomikChef
[off]Исчезаю, но с тебя обьяснение...[/off]
LJ: Backslashed life (rss)

Оффлайн Falcon

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://stavatar.by.ru
Нужно облегчить игру
« Ответ #8 : 27 Января 2005, 00:34:44 »
Antoxa
Цитировать
собсна радикальное решение - не лазить в базу почти никогда.
юзать memcache, или демона наколбасить на пхп хотябы.

Можно на этом момента подробнее. Где можно пример рабочего демона посмотреть? И как может быть демон на пыхпыхе? Ведь хостер ограничил время выполнения скрипта в настройках...

RomikChef
Что именно лишнее?

2Алл, обьясните плиз вот этот момент

Цитировать
$fname = DBTYPE."_select_db";
$r = $fname($dbname);

Что будет если переменную вложить в параметры другой переменной??? они сливаются или как?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Нужно облегчить игру
« Ответ #9 : 27 Января 2005, 01:49:11 »
например - вот это
ini_set("magic_quotes_gpc",1);
и вся это псевдокросплатформенная либа для работы с бд.

Цитировать
Falcon:
Что будет если переменную вложить в параметры другой переменной

у переменных параметров не бывает.
а синтаксис языка рекомендую подучить.не помешает

Оффлайн Falcon

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://stavatar.by.ru
Нужно облегчить игру
« Ответ #10 : 27 Января 2005, 23:59:16 »
RomikChef
Цитировать

у переменных параметров не бывает.
а синтаксис языка рекомендую подучить.не помешает

Значит неправильно сформулировал. Меня инересует именно конкретный пример. В книге я такого не видел.

Еще вопрос появился.
Если сделать табицы типа НЕАР. Это поидее должно намного быстродействие увеличить. И делать дамп базы например каждые пять минут. Ну как? Может такое сработать? Или это еще и от хостинга зависит?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Нужно облегчить игру
« Ответ #11 : 28 Января 2005, 00:59:19 »
оптимизировать надо не таблицы.

Оффлайн Falcon

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://stavatar.by.ru
Нужно облегчить игру
« Ответ #12 : 29 Января 2005, 01:54:30 »
RomikChef
А что надо?

Вот с этим куском кода разобрался
Цитировать
$fname = DBTYPE."_select_db";
$r = $fname($dbname);

В данном случае выполняется функция mysql_select_db($dbname). А в переменную $r попадает результат - true or false. Правильно?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Нужно облегчить игру
« Ответ #13 : 29 Января 2005, 11:38:31 »
Цитировать
Falcon:
А что надо?

оптимизировать надо то, что тормозит.
Если у тебя в машине заклинили тормоза, то установка более мощного двигателя не ускорит её.

чтобы ускорить машину, надо не тыкать пальцем в небо спрашивая встречных-поперечных "А если колёса побольше поставить - будет быстрее?". А сначала определить причину неисправности.

Ферштеен?

Оффлайн Antoxa

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 64
  • +0/-0
  • 0
    • Просмотр профиля
Нужно облегчить игру
« Ответ #14 : 29 Января 2005, 22:29:21 »
Цитировать
CGVictor:
Уверен?

да

Цитировать
Falcon:
Можно на этом момента подробнее. Где можно пример рабочего демона посмотреть? И как может быть демон на пыхпыхе? Ведь хостер ограничил время выполнения скрипта в настройках...

1. где посмотреть - бороться, искать, найти и перепрятать.
2. может быть демон на чем угодно.
3. насчет времени: set_time_limit(0) + php cli + свой php.ini ? если это возможно у хостера, хз. какие хостеры, довольно странно хоститься за 5 баксов в месяц и делать онлайн-игру.

Цитировать
RomikChef:
оптимизировать надо то, что тормозит.

ну вроде человек сообщил, что у него база тормозит, или я плохо читал? :)
AnToXa - born programmer

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28