База или массив, нагрузка.

Opik

Новичок
База или массив, нагрузка.

Есть проект, многопользовательская игра.
Как лучше хранить инфу, например о вещах.
В массиве:
PHP:
$item['roba1'] = array('imageType' => 'armor', 'cost' => '2'...); 
$item['roba2'] = array('imageType' => 'armor', 'cost' => '10'...);
Или в базе с теми же полями, с тем учетом что вещей может быть очень много и вызываются эти данные часто.
На что лучше реагиет маньше сервер, т.е что более ресурсоемко? Думаю больше жрет база. Но всё же хочется услышать ваше мнение или альтернативные решения( менее ресурсоемкие).
 

bgm

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

2) Собственно ответ - база. Плюс учи матчасть.
 

Opik

Новичок
В смысле будет файл
items.php
PHP:
<?
$item['roba1'] = array('imageType' => 'armor', 'cost' => '2'...); 
$item['roba2'] = array('imageType' => 'armor', 'cost' => '10'...);
?>
Парсить ничего не нужно. забыл учесть в первом посте.
 

Разгильдяй

Новичок
В данном случае будет целесообразно использовать хранение хар-к вещей в массивах. ИМХО это очевидно и существенно снизит нагрузку на вашу БД. Единственное думаю придется увеличить размер операвтивной памяти, хотя все зависит от объема информации, которая будет храниться в массивах.
 

Opik

Новичок
В дальшейшем может достигнуть порядка 1000 элементов. А так спасибо за мнение.
 

uchenik

Новичок
Вот тебе рекурсивная функция, которая из массива любой вложенности составит строку.

PHP:
function array_to_string($array)
{
  foreach($array as $key=>$value)
  {
    if(is_array($value))
      $str[] = "'".$key."'=>".array_to_string($value);
    else
      $str[] = "'".$key."'=>'".$value."'";
  }
  return 'array('.implode(',', $str).')';
}
Такой вариант хранения данных вполне оправдан, если не нужны сложные выборки.
 

SiMM

Новичок
> функция, которая из массива любой вложенности составит строку
называется [m]serialize[/m] и, соответственно, используется в паре с [m]unserialize[/m]
А генерировать скрипты скриптами нет никакой необходимости.

> Думаю больше жрет база.
Ананасов или рябчиков?
 

uchenik

Новичок
SiMM
Спасибо что просвятил.

Кстати немного потестировал на скорость - функция serialize работает миниммум на порядок быстрее рекурсии.
 

Разгильдяй

Новичок
Автор оригинала: SiMM
> А генерировать скрипты скриптами нет никакой необходимости.
1. Поясните пожалуйста ваши слова или хотябы к чему это относится. Помоему в данной теме никто не предлагал генерировать скрипты скриптами, речь шла о хранении небольшого объема данных в массивах скрипта, как альтернатива.

Автор оригинала: SiMM
> Думаю больше жрет база.
Ананасов или рябчиков?
2. Ребята, ну сколько можно издеваться над новичками? Скоро вообще нельзя будет вопрос свой задать на этом форуме. Мало того, что унизят, высмеют, так еще ничего дельного не скажут. Наверняка автор не совсем точно выразился, но ИМХО тема серьезная.
 

uchenik

Новичок
Разгильдяй

Генерировать скрипты скриптами означает собрать строку вида "<?php $array = array('key'=>'value'); ?>" и записать ее в файл например "array.php". Это и есть php-скрипт, хотя кроме массива в нем ничего нет.
 

Мутник

Новичок
uchenik

я перечитал тут все... тебе уже сто раз сказали - БД тебя спасет. Не надо никакие извраты на файлы делать, а то что ты тут городишь - ЧУШЬ....

P.S. завязывай с играми, ни к чему хорошему не приведет.

P.P.S. послушай SiMM'a - у него в этом ГОРАЗДО больше опыту.... и не мудри!
 

Opik

Новичок
Мутник
"P.S. завязывай с играми, ни к чему хорошему не приведет." Ну это я сам буду пешать.
"P.P.S. послушай SiMM'a" - А я что то не вижу, что он сказал.
"> функция, которая из массива любой вложенности составит строку
называется serialize и, соответственно, используется в паре с unserialize
А генерировать скрипты скриптами нет никакой необходимости." ко мне этот никак не относится, ибо отвечал он uchenik'y на array_to_string
"> Думаю больше жрет база.
Ананасов или рябчиков? "
Или тут совет? специально для всех буду писать теперь, как для дебилов.
"Думаю больше оперативной памяти употребляет база => База больше нагружает сервер."
 

SiMM

Новичок
> Думаю больше оперативной памяти употребляет база => База больше нагружает сервер.
А ты не думай. Возьми да сравни.

> В дальшейшем может достигнуть порядка 1000 элементов.
Вот на этой величине и сравнивай. Только не забывай, что составить SQL-запрос зачастую куда проще, чем написать туеву хучу кода, его реализующего.
 

bgm

&nbsp;
Автор оригинала: Разгильдяй
В данном случае будет целесообразно использовать хранение хар-к вещей в массивах. ИМХО это очевидно и существенно снизит нагрузку на вашу БД.
Снизит, конечно снизит. И вообще - зачем это все с этими базами носятся? Ведь насколько проще - массив и всё - существенное снижение нагрузки.
Очевидно? А если вообще базой не пользоваться - какая красота - нагрузка на неё ноль.

-~{}~ 06.05.05 09:51:

"Думаю больше оперативной памяти употребляет база => База больше нагружает сервер."
Вот представь себе ситуацию - у тебя 1000 игроков. И у каждого вот такой вот массив "снаряжение". Что будет, если ты захочешь добавить туда дополнительную характеристику? Для всех сразу? Или изменить название предмета?
Не изобретай велосипед - все инструменты уже давно придуманы - любая доступная сейчас база данных для таких задач на порядок эффективнее.
 
Сверху