здраствуйте, меня интересует динамичная (тоесть быстрая) передача даных по интернету,
пробовал через тхт (флэшка(на локале) передает параметры в php(на сервере) а он записывает их в тхт, и другой флэшкой брал данные из этого тхт )- ооооочень медленно
посоветовали MySQL , но я нарвался на эту статтю
http://www.softboard.ru/index.php?showtopic=58928
и понял что это еще медленее
в этой статте, в третьем варианте использовали php файл для хранения данных?
как это возможно?
пробовал закидать флэшку на сервер, и обращаться к php - не получаеться
может изза того что используеться html-AC_RunActiveContent-swf
помогите а? может советом, мыслями на эту тему?
если я что не так написал- это я русский не знаю :)
Заканчивая работу над CMS-кой к флеш сайту, которая сделана также на флеше + PHP + MySQL, выражу свое мнение. Голые цифры данной статьи (http://www.softboard.ru/index.php?showtopic=58928) а скорее, просто размышлений, наблюдений автора топика) не имеют, на мой взгляд, серьезного отношения к преимуществам и удобством работы с MySQL. Почитайте, что пишет его оппонент по поводу того же быстродействия и масштабируемости функционала запросов. Добавлю от себя. Одно дело - писать в текстовый файл кучу строк, разделенных спецсимоволами, но потом придется строить сложную структуру парсеров для выборки и добавления/замены значений столбцов.
Также вижу трудности в совместной работе с подобной базой на основе текстовых файлов, недостаточно прозрачное назначение прав доступа в иерархии текстовых файлов и т.п. Технология БД же берет всю эту работу на себя.
Язык SQL запросов достаточно прост, логичен и имеет хорошую связь со специальными функциями PHP. Работа пользователя или пользовательского скрипта с БД на его основе - давно зарекомендовавшая себя технология.
Что касается ваших трудностей. Я, например публиковал свою CMS-флешку с использованием AC_FL_RunContent, <object>, и все работает прекрасно.
Обращайтесь к серверным скриптам методом load класса LoadVars или, если нужно получить от скрипта результат работы (либо данные в виде пар имя=значение, или просто сообщения об успешности выполнения скрипта), методом sendAndLoad.
Пример реализации.
Вот так я, например, обновляю данные конкретной записи в одной из SQL-таблиц:
//Базовая функция обновления записи в таблице
//В качестве аргументов функции обновления ей из мувика с полями
//ввода и вывода передаются заполненные там же массивы с именами полей, старыми значениями полей,
///новыми значениями и идентификатор товара по базе
UPD5full = function(FildsName, FildsOldValue, FildsNewValue, id) {
UpdBef = 0; //триггер обновления хотя бы одного поля
UPD5SendVars = new LoadVars(); //контейнер для ОТПРАВЛЯЕМЫХ данных
//начинаем формировать запрос
UPD5SendVars.id = id; //говорим скрипту, какой id товара
//формируем запрос, забивая только изменившиеся значение в контейнер:
for (f=1; f <= 22; f++) { //складываем запрос по полям и их значениям
//проверяем, есть ли изменения в f-м поле и при этом - не пустая строка
if(FildsNewValue[f] != FildsOldValue[f] && FildsNewValue[f] != "") {
UPD5SendVars[FildsName[f]] = FildsNewValue[f];
UpdBef = 1;
}
// а теперь проверяем: есть ли изменения в f-м поле и теперь пустая строка
// (стерли значение)
if (FildsNewValue[f] != FildsOldValue[f] && FildsNewValue[f] == "") {
UPD5SendVars[FildsName[f]] = "#empty#";
//здесь у меня по слову empty sql очистит запись в указанном поле
UpdBef = 1;
}
}
//если что-то менялось в полях, то будем проводить запрос
if (UpdBef == 1) {
UPD5Vars = new LoadVars(); //контейнер для ПОЛУЧАЕМЫХ данных
UPD5Vars.onLoad = function(success:Boolean) {
//вызов функции, отвечающей за то, какие действия совершать в случае
//успешной связи со скриптом на сервере
ONLOAD_5level(success,'UPD5Vars',id);
};
//НЕПОСРЕДСТВЕННО ЗАПРОС НА ОБНОВЛЕНИЕ ТОВАРОВ ПО ИДЕНТИФ-РУ
UPD5SendVars.sendAndLoad('http://www.домен.ru/админка/upd5full.php', UPD5Vars, "POST");
} //if
else { //если все по-старому осталось, и нет изменений в значениях полей, то
adv(1); //показываем сообщение "все по-старому"
}
}; //UPD5full
А вот ф-я обработки результатов запроса с учетом того, что скрипт отдает флешке:
//Функция - что делать в з-ти от тго, что меняли после запроса на обновление записи
//GoodLoad - (приходит переменная success), булево значение, true - загрузка удалась
//Act - из результатов выполнения скрипта приходит объект, получаемый после загрузки URL-а, который содержит отдаваемые скриптом переменные в строке
//id - (приходит переменная id) - идент-р товара в таблице SQL
function ONLOAD_5level(loadstatus, Act, id) {
//проверка связи, если UPD5Vars.onLoad возвратила true,
//то и loadstatus будет true
if (loadstatus) {
if (!_root[Act].sqlerror) { //проверка выполнения SQL-запроса
switch (Act) { //что делаем с результатом в з-ти от Act
case 'UPD5Vars': //экспресс-обновление в списке товаров
CAT5Updaeted(id);
break;
case 'UPD5typesVars': //обновление характеристик товаров
CAT5TypesUpdated(id);
break;
} //switch
} else { //ошибка SQL
errorTF.text = _root[Act].sqlerror;
}
} else { //ошибка: нет связи
errorTF.text = errs['Нет связи с сервером или отсутствует обработчик'];
}
};
И наконец, хвостик скрипта PHP, который докладывет о результатах, но не передает сами данные:
<?php
mysql_query($query) or die("sqlerror=".mysql_error());
if (!mysql_error()) {
echo "rez=ok";
}
else {
echo "sqlerror=".mysql_error();
}
?>
Здесь вместо строки вида sqlerror="текст ошибки" могут быть и сами данные в виде: var1=var1_value&var2=var2_value
Эту строку получает флеш и эти переменные мы можем забрать в данном случае из UPD5Vars (из контейнера для получаемых данных)
Замечания:
1. Нужно учитывать, что если делаем запрос с помощью load, а не sendAndLoad, то метод GET нам недоступен, и нужно формировать строку пар переменных-значений обычным для GET способом:
CAT5UpdatedVars.load('http://www.домен.ru/админка/cat5expupdated.php?id='+id+'&r='+Math.random());
Здесь "&r="+Math.random() - рандомная переменная в конце GET-строки - необходима, чтобы URL каждый раз изменялся, так как в отличие от HTTP-метода POST, отклик сервера при GET-запросе может и, если судить по практике, обычно кэшируется браузером и данные не передаются/не получаются.
2. И еще, чтобы при проверке
CAT5UpdatedVars.onLoad = function(success:Boolean) {
//действия в случае удачной связи со скриптом
}
проверка выполнялась удачно, скрипт обязательно должен выводить хоть что-то ("rez=ОК" например), чтобы не было пустой строки.
3. Конечно, нужно помнить о безопасности - авторизация при запросе к серверному скрипту, безопасное их хранение на самом сервере, права доступа к БД на SQL.
В общем, вот так как-то. Естественно, мой пример далек до совершенства. Наверняка можно как-то выжать по-полной объектную модель, но в ООП я не силен. Общие принципы я постарался изложить и все это работает.
Флеш тут - только интерфейс пользователя и формирователь команд для PHP.
Может быть ну ее, админку на AS и с флешем? Хотя достоинства есть и тут, та же анимация и расширенная графика, представление данных - немаловажный фактор при работе GUI.
У меня, анпример, анимируются списки после добавления новой записи, еще есть разная анимация - процесс общения с сервером иллюстрируется анимацией, ну и по мелочи.
Будут вопросы, пишите.
И, кстати, русский тоже сильно помогает, не пренебрегайте им. :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.