Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Тона констант в PHP или база в SQL? (http://www.flasher.ru/forum/showthread.php?t=130485)

Tr1te 27.09.2009 16:22

Тона констант в PHP или база в SQL?
 
Хочу делать базу из ~1000 переменных, к которым будет постоянный доступ(сервер к которому будет обращаться куча пользователей). И сначала я хотел создать базу в SQL, и при каждом запросе, ПХП будет обращаться к базе, резервировать переменную, и сравнивать входные данные. А потом подумал зачем мне все время делать поиск по базе, при каждом запросе, если я могу просто зарезервировать 1000 констант в ПХП(через define()), и просто сравнивать входные данные с этими переменными. Какой из этих вариантов лучше?

flash33 27.09.2009 17:08

Первый

Tr1te 27.09.2009 17:15

Забыл сказа что мне нужно то что быстрей работает. И можете объяснить почему первый вариант, я просто не понимаю. Что нужно для такого кол-во переменных, оперативка, ну куплю тонну оперативы для сервера. И во втором варианте, я так понимаю эти переменные будут просто всегда подгружены, все равно они будут постоянно использоваться. Зачем осуществлять поиск по каждому запросу.

Mnilionic 27.09.2009 17:41

Цитата:

И во втором варианте, я так понимаю эти переменные будут просто всегда подгружены, все равно они будут постоянно использоваться
они будут подгружены для каждого запроса персонально. То есть для 10 пользователей уже будет 10 000 констант.

Tr1te 27.09.2009 18:40

Цитата:

Сообщение от Mnilionic (Сообщение 853963)
они будут подгружены для каждого запроса персонально. То есть для 10 пользователей уже будет 10 000 констант.

Нет, я ошибся, это константы с которыми надо будет просто сравнивать. Так что они не будут меняться, а следовательно их всегда будет 1000 для всех пользователей. Просто я так понимаю это потребует большого кол-ва оперативы. А если делать базу на SQL то он каждый запрос будет открывать новую сессию с БД, осуществлять там поиск, потом из полученных данных, будет сравнивать с входными переменными от пользователей. Что по логике, замедлит процесс, на практике не пробовал.

Mnilionic 27.09.2009 18:48

нет! их будет по 1000 на каждого пользоватлея, потму что на каждый запрос запускается персональная копия php-интерпритатора, или как он тим пишется.

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

Tr1te 27.09.2009 18:50

Цитата:

Сообщение от Mnilionic (Сообщение 853986)
потму что на каждый запрос запускается персональная копия php-интерпритатора

То что нужно было мне знать, проблема решена, спасибо.

duhowka 28.09.2009 00:44

можно узнать побольше про алгоритм?

Tr1te 29.09.2009 11:03

Цитата:

Сообщение от duhowka (Сообщение 854047)
можно узнать побольше про алгоритм?

Конечно, банальная игрушка, которая хранит данные на сервере, например будут стандартные характеристики объектов. Клиент чтобы узнать эти характеристики отправляет запрос на сервер, на котором хранится база этих характеристик. И таких запросов будет достаточно много, и я думал зачем все время обращаться к базе SQL, если можно задать константы с характеристика прямо в ПХП, но так как я узнал, что пхп интерпритатор для каждого запроса - свой, то проблема отпала сама собой.

flash33 29.09.2009 11:53

Tr1te, для ввода констант есть XML, JSON - для этого не надо никаких БД. Почитайте основы, не лезьте вы сразу в дебри :) Тем более если это КОНСТАНТЫ, то их можно вшить в swf

Tr1te 29.09.2009 13:12

В SWF вшить нельзя, это игровая флешка.
Да мне все равно как и где хранить константы, мне главное чтобы это было максимально экономично по ресурсам, и максимально быстро работало. Тут и спрашиваю совета. Если быстрей в XML, то буду в XML, хотя вчера уже написал на SQL, и начал заполнять базу.
И возник вопрос: http://www.flasher.ru/forum/showthread.php?t=130568
Но если хранить в XML, то опять тот же самый вопрос, что быстрей, если я сохраню строку и буду делить PHP, или если для каждой переменной создам разметку XML. Хотя тут наверняка вариант с индивидуальной разметкой - быстрей, а вот как в SQL этого я не знаю.

flash33 29.09.2009 14:34

Цитата:

В SWF вшить нельзя, это игровая флешка
И что? А если с сервера придет ответ, его нельзя прочитать? Так что ли? Бред!
Цитата:

Но если хранить в XML, то опять тот же самый вопрос, что быстрей, если я сохраню строку и буду делить PHP, или если для каждой переменной создам разметку XML
Вы знакомы с хмл? Там ВООБЩЕ PHP побоку. Забудте. Загружайте хмл как текстовый файл, парсите нативными средствами as2/3. Столько переписано литературы по xml, применительно к as написаны парсеры - там все прозрачно и ясно - это один из основных языков, на котором разговаривает сервер и клиентская сторона в интернете.
Вот пример хмл к вашему случаю
data.xml
Код:

<xml>
<value_1>1</value_1>
<value_2>3</value_2>
<Фамилия>Пупкин</Фамилия>
<Имя>Вася</Имя>
.......
</xml>

Простой парсер, вынимающий пару имя - значения из этого хмл
Код AS3:

//загрузка с сервера
var loader = new URLLoader();
loader.addEventListener("complete", onComplete);
var request = new URLRequest("путь_к_xml/data.xml");
loader.load(request );
.......
//чтение в объект
var xmlObject = {};
function onComplete(e){
var xml= new XML(e.target.data);
for each (var node:XML in xml.*) {
  xmlObject[node.name()]=node.text();               
}
//Проверяем
trace(xmlObject.Фамилия); //Выводит "Пупкин"       
}

То же самое для ваших переменных - запоминаем их предварительно сконвертировав в int: xmlObject[node.name()]=int(node.text());
Все

duhowka 29.09.2009 14:55

Цитата:

Сообщение от flash33 (Сообщение 854343)
Tr1te, для ввода констант есть XML, JSON - для этого не надо никаких БД. Почитайте основы, не лезьте вы сразу в дебри :) Тем более если это КОНСТАНТЫ, то их можно вшить в swf

+1 проще вшить, т.к флешка загружается, если все таки какие то изменения допустим в течении дня или часа -) , то XML

Tr1te 29.09.2009 18:00

Цитата:

Сообщение от flash33 (Сообщение 854391)
И что? А если с сервера придет ответ, его нельзя прочитать? Так что ли? Бред!

Ну нельзя, потому что эти константы вообще до клиента доходить не будут, это сделано чтобы проверить запрос. Флэш Клиент это только интерфейс и генератор запросов. Вся инфа о пользователе хранится на сервере. От клиента пришел запрос, на то или иное действие, PHP Получила этот запрос, дальше проверяет, может ли сделать это действие пользователь, А проверяет как раз из базы констант. Обратился к базе констант, посмотрел - может, значит возвращает True клиенту, и производит необходимые изменения в другой базе на сервере, если не может, значит кто то подделывает запрос с клиента, возвращаем False и баним.

Зачем мне парсер ХМЛ в клиенте, если я любым снифером потделую входящую инфу, и сделаю из этого ХМЛ что захочу. И FLASH это проглотит с потрохами.

Большое спасибо за старания и то что расписали парсер, но у меня проблема не написать парсер, у меня он уже есть, так как ПХП с клиентом общается через ХМЛ. Я бы хотел выбрать наибыстрейший способ реализации базы констант. И эти константы никуда отправляться не будут, мне с ними надо только сравнивать на сервере.

duhowka 30.09.2009 17:14

мда. наверно это не константы, а переменные.
з.ы пишите лучше не на пхп, будет жопа потом

Tr1te 30.09.2009 22:07

В чем жопа?
Почему не на ПХП?
На чем тогда писать?

Уже сделал на ПХП, и нашел отличную вещь, для реализации моей задумки, все таки сохраняю в одну строковую переменную: serialize() Так получается быстрей.


Часовой пояс GMT +4, время: 02:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.