2010-05-03 3 views
1

У меня есть программа Flex, которая получает массив JSON из скрипта PHP. PHP-скрипт не содержит только простой массив JSON, но он захватывает данные из Activecollab и выполняет некоторую работу над данными перед кодированием данных.Flex URLRequest Timeout

Первый тест включает небольшой массив JSON, который потребовал короткого времени для кодирования с помощью PHP. Однако, когда я пытаюсь увеличить тест, Flash-фильм выйдет из строя, пытаясь загрузить данные JSON с PHP. Между тестами нет разницы между кодом, просто количество данных и количество времени, которое требуется для кодирования PHP. Я рассматриваю проблему с памятью или проблему с тайм-аутом?

PS: Когда я вызываю PHP-скрипт в Firefox, он не уходит и все еще возвращает массив JSON. Чтобы вернуть массив, потребовалось некоторое время.

+0

ОК, я попробовал переписать его с помощью HTTPService и с использованием requestTimeout 0. Я все еще получаю сообщение об ошибке 2032 IO, несмотря на то, что я могу читать выход JSON, направляя как FF, так и IE в соответствующий URL. Я полностью потерял это. – MooCow

ответ

0

Я предполагаю, что поражение вашего php-сервиса в браузере не истечет. Если это так, то вам нужно изменить настройки php, чтобы сценарий работал дольше.

В противном случае вы можете попробовать другую стратегию в целом следующим образом: Попросите Flex позвонить в службу php и сообщить ей, чтобы начать обработку данных, чтобы ваша служба php вернула идентификатор токена, чтобы использовать его для опроса. Попросите другую службу php отслеживать ход обработки (получение маркера для отслеживания задания). Эта вторая услуга будет возвращать отчет о ходе работы с каждым запросом до тех пор, пока обработка не будет выполнена. Когда обработка завершена, она возвращает данные следующего запроса.

Имейте php для генерации идентификатора, используемого для отслеживания «задания», чтобы flex мог опросить и извлечь данные, когда задание выполнено. Это, по крайней мере, устранит время ожидания, с которым сталкивается Flex, в то время как обработка на стороне сервера происходит.

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

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

Смежные вопросы