Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 03.06.2009, 00:29
apoptom вне форума Посмотреть профиль Найти все сообщения от apoptom
  № 1  
apoptom
Banned
[+1.4 05.06.09]
[+1.3 13.08.09]
[+1.3 05.06.09]

Регистрация: Nov 2008
Сообщений: 22
Question flash+php

здраствуйте, меня интересует динамичная (тоесть быстрая) передача даных по интернету,

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

посоветовали MySQL , но я нарвался на эту статтю
http://www.softboard.ru/index.php?showtopic=58928
и понял что это еще медленее
в этой статте, в третьем варианте использовали php файл для хранения данных?
как это возможно?

пробовал закидать флэшку на сервер, и обращаться к php - не получаеться
может изза того что используеться html-AC_RunActiveContent-swf

помогите а? может советом, мыслями на эту тему?

если я что не так написал- это я русский не знаю

Старый 03.06.2009, 03:55
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Заканчивая работу над CMS-кой к флеш сайту, которая сделана также на флеше + PHP + MySQL, выражу свое мнение. Голые цифры данной статьи а скорее, просто размышлений, наблюдений автора топика) не имеют, на мой взгляд, серьезного отношения к преимуществам и удобством работы с MySQL. Почитайте, что пишет его оппонент по поводу того же быстродействия и масштабируемости функционала запросов. Добавлю от себя. Одно дело - писать в текстовый файл кучу строк, разделенных спецсимоволами, но потом придется строить сложную структуру парсеров для выборки и добавления/замены значений столбцов.
Также вижу трудности в совместной работе с подобной базой на основе текстовых файлов, недостаточно прозрачное назначение прав доступа в иерархии текстовых файлов и т.п. Технология БД же берет всю эту работу на себя.
Язык SQL запросов достаточно прост, логичен и имеет хорошую связь со специальными функциями PHP. Работа пользователя или пользовательского скрипта с БД на его основе - давно зарекомендовавшая себя технология.

Что касается ваших трудностей. Я, например публиковал свою CMS-флешку с использованием AC_FL_RunContent, <object>, и все работает прекрасно.

Обращайтесь к серверным скриптам методом load класса LoadVars или, если нужно получить от скрипта результат работы (либо данные в виде пар имя=значение, или просто сообщения об успешности выполнения скрипта), методом sendAndLoad.

Пример реализации.

Вот так я, например, обновляю данные конкретной записи в одной из SQL-таблиц:

Код AS1/AS2:
//Базовая функция обновления записи в таблице
//В качестве аргументов функции обновления ей из мувика с полями
//ввода и вывода передаются заполненные там же массивы с именами полей, старыми значениями полей, 
///новыми значениями и идентификатор товара по базе
 
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
А вот ф-я обработки результатов запроса с учетом того, что скрипт отдает флешке:
Код AS1/AS2:
//Функция - что делать в з-ти от тго, что меняли после запроса на обновление записи
//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 код:
<?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 способом:
Код AS1/AS2:
CAT5UpdatedVars.load('http://www.домен.ru/админка/cat5expupdated.php?id='+id+'&r='+Math.random());
Здесь "&r="+Math.random() - рандомная переменная в конце GET-строки - необходима, чтобы URL каждый раз изменялся, так как в отличие от HTTP-метода POST, отклик сервера при GET-запросе может и, если судить по практике, обычно кэшируется браузером и данные не передаются/не получаются.

2. И еще, чтобы при проверке
Код AS1/AS2:
CAT5UpdatedVars.onLoad = function(success:Boolean) {
//действия в случае удачной связи со скриптом
}
проверка выполнялась удачно, скрипт обязательно должен выводить хоть что-то ("rez=ОК" например), чтобы не было пустой строки.

3. Конечно, нужно помнить о безопасности - авторизация при запросе к серверному скрипту, безопасное их хранение на самом сервере, права доступа к БД на SQL.

В общем, вот так как-то. Естественно, мой пример далек до совершенства. Наверняка можно как-то выжать по-полной объектную модель, но в ООП я не силен. Общие принципы я постарался изложить и все это работает.
Флеш тут - только интерфейс пользователя и формирователь команд для PHP.

Может быть ну ее, админку на AS и с флешем? Хотя достоинства есть и тут, та же анимация и расширенная графика, представление данных - немаловажный фактор при работе GUI.
У меня, анпример, анимируются списки после добавления новой записи, еще есть разная анимация - процесс общения с сервером иллюстрируется анимацией, ну и по мелочи.
Будут вопросы, пишите.
И, кстати, русский тоже сильно помогает, не пренебрегайте им.


Последний раз редактировалось mooncar; 03.06.2009 в 09:35.
Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 10:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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