PDA

Просмотр полной версии : как определить ошибку при loadVariables


joker2k1
30.01.2002, 00:32
Господа,

подскажите как определить случай ошибки loadVariables
например нет такого адреса
или адрес не отвечает.

С уважением
Евгений

Novikoff
30.01.2002, 23:24
попробуй грузить контрольную переменную и проверять в муве ее наличие - если есть - то все ок,а если нет ...........

nagash
31.01.2002, 03:09
onClipEvent (data) {
}

data - Инициализация команд при получении данных в командах loadVariables или loadMovie. Когда это связано с командой loadVariables, событие data происходит только один раз в момент окончания загрузки последней переменной. При использовании команды loadMovie, событие data может быть многократным, по мере подхода новых данных.

joker2k1
31.01.2002, 18:54
да я не про это.
я про то что например укажу я loadVaribales("index.php".....);
а такого файла нет?
и как эту ситуацию отловить во flash что бы окно с ошибкой вывести???
я вижу выход один тока по таймауту.
вот и спрашиваю есть еще какие идеи или механизмы на этот счет?

C2Plus
31.01.2002, 20:30
можно заменить дефолтовую страницу ошибки на сервере, своей, начинающейся с error=1& а дальше текст для броузера. Примерно так. Наверняка. :)

Crazy
31.01.2002, 20:44
Я таки не понимаю: а чем не устраивает вариант, который предложил гражданин Novikoff?

C2Plus
31.01.2002, 21:27
Crazy а тем, что ее нужно ждать в течении тайм аута, в то время как ответ сервера может быть получен быстрее. Копране ву?

Crazy
31.01.2002, 21:39
Хочу подробностей. :)

Пусть по указанному URL возвращается список пар "переменная=значение" с соответствующим квотингом. Последней парой стоит "guard=1".

Во Flash'е мы выставляем guard=0 и загружаем переменные. Загрузка продолжается до таймаута или ошибки любого рода. Если по завершению операции guard=1 -- значит данные загрузились. Если guard=0 -- была ошибка некоторого рода.

Где огрех в логике?

C2Plus
31.01.2002, 22:40
у тебя стоит тайм аут 30 сек. Если ты запросишь не существующий файл, твоя переменная guard не прийдет, и ты будешь ждать 30 секунд. Зато если сервер вернет переменную BadURL=1 и ты будешь за ней следить, то ждать не придется, результат будет получен быстрее. Вот и вся разница. :)

Crazy
31.01.2002, 22:57
Если я запрошу несуществующий файл, то немедленно получу от сервера ответ с "Error 404".

Ты провел эксперимент и установил, что Flash после получения "Error 404" продолжает ожидание?

C2Plus
31.01.2002, 23:38
грубо говоря, нет. :) Конечно же он не будет ждать если ты используешь событие data. :)

Зато ты можешь быть увереным в отсутствии файла! ;))))))))

Ладно, признаюсь, на самом деле я дерево. :)

joker2k1
01.02.2002, 12:00
хм. ну вы (censored) даете :)))

смотрите. делаю
_root.mymovie.loadVariables('index.php', 'GET');

теперь соберитесь.
две ситуации.
1. путь отсутсвует (index.php)
тогда в случае запуска из среды flash в окне Output тут же получаем ошибку что файла нет. Это в среде разработки, а вот в муве где это выскакивает?
2. путь недоступен в данный момент. например сервак упал. тогда ответ вообще не получим. так и будет висеть

А теперь самое главное, т.к. процесс загрузки асинхронный т.е. это событие mymovie/data обозначающее что данные пришли, и нет события что они вообще не придут!
т.е. мувя будет ждать пока свершиться это событие, которое никогда уже не свершиться, и нет события по которому ошибку вывести.

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

Crazy
01.02.2002, 12:56
Оригинал написал(а) joker2k1
1. путь отсутсвует (index.php)
тогда в случае запуска из среды flash в окне Output тут же получаем ошибку что файла нет. Это в среде разработки, а вот в муве где это выскакивает?

Нигде.


2. путь недоступен в данный момент. например сервак упал. тогда ответ вообще не получим. так и будет висеть


Это экспериментально проверенный факт или предположение?


А теперь самое главное, т.к. процесс загрузки асинхронный т.е. это событие mymovie/data обозначающее что данные пришли, и нет события что они вообще не придут!

Вывод: не используй onmovie/data. :)

C2Plus
01.02.2002, 13:13
На самом деле, сервак может и не падать, а ответ от него не придет, или запрос до него может совершенно запросто не дойти. :) Крэйзи, предупреждая твой вопрос, эксперементально проверено, и програмно компенсировано. :)

Crazy
01.02.2002, 14:13
Этот случай очевиден. Точнее, здесь мы имеет дело с таймаутом на уровне прикладного протокола. Но для флэша опять таки не будет бесконечного ожидания: как только HTTP-энжин даст отмашку об истечении допустимого времени -- LoadVariables завершится.

C2Plus
01.02.2002, 15:01
а ты подожди. :)

Crazy
03.02.2002, 16:49
Подождать чего? :)

Мы говорим о функциии LoadVariables или о конкретном алгоритме ее использования?

nagash
03.02.2002, 18:24
подожди загрузки файла

Crazy
03.02.2002, 18:44
И какие же проблемы, помимо стандартной обработки асинхронного ввода, меня при этом ждут? :)

nagash
03.02.2002, 18:50
м... слишком умные слова... что-то я прям расстерялся... =)))
всё... я повержен... =)

Crazy
03.02.2002, 19:13
Ok. По простому: стандартная схема асинхронного ввода:

1. Инициируем операцию и активируем новый поток, ожидающий ее завершения.

2. По завершении операции или по таймауту выполнение этого потока прекращаетяс и выставляется флаг с кодом завершения.

Внимание, вопрос: в каком месте должны возникнуть проблемы при LoadVariables? Почти верю, что они есть (хоть я их и не встретил пока), но хочется подробностей.

Если те, кто намекал мне о страшных траблах, имели в виду иную схему, то, наверное, стОит об этой схеме рассказать. :)

nagash
03.02.2002, 19:19
и чего...
ты кажисьсовсем не понимаешь о чём топик или я не понимаю о чём ты =)
файла на сервере не существует... и надо сразу же об этом написать и не ждать таймаута...
при чём здесь твои потоки? :)
а трабл при лоадвариаблес очень простой...
на модеме может оченьдолго загружаться текстовый фаил а скрипт уже потребует переменных... надо ждать пока он загрузится... проверяя разными интересными способами =)

Crazy
03.02.2002, 19:37
Оригинал написал(а) nagash
файла на сервере не существует... и надо сразу же об этом написать и не ждать таймаута...

Переписываешь ErrorPage так, чтобы он возвращал ответ в виде:


loaded=-1



при чём здесь твои потоки? :)
а трабл при лоадвариаблес очень простой...
на модеме может оченьдолго загружаться текстовый фаил а скрипт уже потребует переменных... надо ждать пока он загрузится... проверяя разными интересными способами =)

Вот тут-то потоки и при чем. :)

nagash
03.02.2002, 22:00
не хочу с тобой гворить на эту тему! =)))