Получение данных из MySQL во Flash'е

DimaK

Новичок
Получение данных из MySQL во Flash'е

Мне нужно постоянно получать данные(координаты) из MySQL с помощью PHP во Flash'е.
Во Flash'е:
_root.onEnterFrame = function(){
l.onLoad = function(){
for (t=1;t<160;t++){
///здесь идёт запись координат в массив
}
}
for (t=1;t<160;t++){
//здесь происходит присвоение координат из массива объектам
}
}
Всё это глючит и работает медленно.
Можно ли как-нибудь передавать данные из MySQL'а во Flash, т. е. не Flash в цикле считывает данные из БД, а MySQL их отправляет?
Если нет, то есть ли другой способ, который бы работал быстрее?
 

Фанат

oncle terrible
Команда форума
Можно ли как-нибудь передавать данные из MySQL'а во Flash, т. е. не Flash в цикле считывает данные из БД, а MySQL их отправляет?
нет
есть ли другой способ, который бы работал быстрее?
есть.
запросить все данные сразу
 

DimaK

Новичок
Можно их, конечно, загрузить и сразу, но это не решит проблемы. Я делаю online-игру, а там всё очень динамично (меняются координаты у объектов), поэтому нужно постоянно передавать большущую базу во Flash. Это всё и тормозит. А как это можно устроить по-другому, я не знаю. Ведь как-то это делают.
 

Фанат

oncle terrible
Команда форума
но это не решит проблемы
какой проблемы?
поэтому нужно постоянно передавать большущую базу во Flash.
зачем?
откуда взялась "большущая" база, если речь идёт о 160 координатах?
Ведь как-то это делают.
делают люди, которые хоть немножко понимают в предмете.
Хотя бы настолько, что мгут вопрос задать, а не мычание.

-~{}~ 17.10.05 18:34:

что изменится, если не флеш будет запрашивать, а база данных отправлять? отправка пойдёт быстрее?
 

DimaK

Новичок
Что за проблема? Проблема в том, что Flash-ролик глючит: всё двигается крайне медленно. Ну во-первых координат не 160, я такого не писал, это 160 строк в БД, где в каждой строке идёт название объекта, x- и y-координаты этого объекта, и всё это постоянно передаётся во Flash.
 

Фанат

oncle terrible
Команда форума
с чего ты взял, что глючит кривой ролик именно из-за базы?
с чего ты взял, что получение всех данных кучей проблему не решит?
с каких пор 10 строк в базе данных стали БОЛЬШУЩЕЙ базой?
что изменится, если не флеш будет запрашивать, а база данных отправлять? отправка пойдёт быстрее?
 

DimaK

Новичок
Ролик не кривой. В базе не 10 строк, а 160. Просто я не имел опыта работы с базами больше этой, поэтому и назвал её большущей.
 

Фанат

oncle terrible
Команда форума
постоянно меняются все 160 строк? одновременно?
 

DimaK

Новичок
Меняются не одновременно. Т. е. пользователь перетаскивает объект и при отпускании объекта в базу заносятся изменённые координаты, причём база постоянно загружается во Flash. А как это всё правильно организовать, чтобы процессор был загружен не сильно, я не знаю.
 

Фанат

oncle terrible
Команда форума
если меняются не все, то зачем тягать все?
что значит "причём база постоянно загружается во Flash" ? сама по себе? в бесконечном цикле?
как только загрузится - тут же начинает грузиться снова?
 

DimaK

Новичок
Вот именно. Просто неизвестно когда передвигается объект, поэтому приходится загружать всю базу в бесконечном цикле. Другого решения я не нашёл.
 

alexhemp

Новичок
DimaK

Все потому что ты не тот протокол используешь для этого. HTTP не подходит.

Используй собственный демон и собственный STATEFULL-протокол для этого.

Демон пусть реализует отправку координат всем подключившимся участникам при их изменении (даже БД не особо понадобиться).
 

alexhemp

Новичок
Очевидно, что если тебе нужно мгновенно узнавать об изменениях в базе - то нужно держать постоянное TCP соединение с сервером.

HTTP не подходит в принципе, т.к. HTTP соединение рвется сразу после окончания загрузки.

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

Итак

1. Пишешь на С/C++/Perl/PHP отдельный сервер, который слушает порт 12345 например (причем многопоточный)
2. По HTTP загружается с сайта Flash-ролик.
3. Через XMLSocket (я ActionScript не знаю, может и еще что-то есть) соединяешься с сервером по 12345 порту.
4. Посылаешь команды серверу (типа "дай мне список всех объектов локации такой-то"
5. Принимаешь сообщения от сервера с описанием объектов
6. Сервер по команде изменения должен рассылать всем клиентам эти изменения - т.е. поддерживать контекст.
7. Если нагрузка большая, то использовать кэширование на стороне сервера (memcached например)

Во всем этом я вижу одну большую проблему - нужна приличная квалификация чтобы создать такую систему.

Это я в качестве алаверды к тому что сказал Фанат:
делают люди, которые хоть немножко понимают в предмете
Более подробно - это ты уже сам.
Я описал как бы я решал эту проблему.
 

DimaK

Новичок
Большое спасибо. Буду разбираться.

-~{}~ 18.10.05 19:41:

Теперь появилась другая проблема. Я создал Socket-сервер на PHP, который получает данные и отсылает их всем файлам. Но вопроса: что делать, когда войдёт новый пользователь, ведь нужно загрузить координаты всех объектов? Вообще, возможно, ли это сделать с помощью Socket-сервера?

-~{}~ 19.10.05 20:41:

Я разобрался. Спасибо всем большое.
 
Сверху