Запросить данные во Flash-ролике из PHP во время выполнения

Можно ли запросить некоторые данные во Flash-ролике из PHP во время выполнения? Возможно, моя реальная реализация может прояснить некоторые вещи:

Я использую Flash-фильм для хранения локального общего объекта (потому что по какой-то причине мне нужны LSO или обычные PHP-файлы cookie). Теперь, когда я загружаю PHP-файл, я хочу как-то извлечь данные из LSO во время выполнения, назначить его некоторым переменным и использовать переменные через остальную часть скрипта.

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

Related of "Запросить данные во Flash-ролике из PHP во время выполнения"

Лучший способ обмениваться Flash и PHP – это XML (не забудьте использовать UTF-8!).

в PHP:

$xml = new DOMDocument('1.0', 'UTF-8'); $doc = $xml->appendChild($xml->createElement('my-root-element')); ... header('Content-Type: text/xml; charset=utf-8'); echo $xml->saveXML(); 

В as3

 var myLoader:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest('http://host.com/my_xml.php'); myLoader.addEventListener(Event.COMPLETE, onMyXMLLoad); myLoader.load(req); function onMyXMLLoad(evt:Event) { trace(evt.target.data); var xml:XML = new XML(evt.target.data); ... } 

Вы также можете прочитать о ExternalInterface … Да, иногда это помогает … Вы можете генерировать динамически свой JS для связи со флеш-фильмом.

Есть два способа сделать это здесь (и мы делаем это честно). Один из них – написать свой PHP так, чтобы он выводил хорошо сформированный XML, который может быть использован вашим Flash-приложением. Другой использует AMFPHP, который немного сложнее настроить, но он может сделать довольно много с точки зрения перевода объектов / массивов PHP в собственные объекты Flash.

Не уверен, что это точно соответствует вашей конкретной ситуации, но с точки зрения общего решения для извлечения данных из PHP внутри приложения Flash оно выполняет свою работу.

Используйте getURL (), вы можете получить страницу, которая возвращает необходимые данные или задает необходимые данные.

Я бы предположил, что вы вызываете страницу наподобие flashExchange.php через

 getURL('flashExchange.php?cacheBust=' + random(99999), '_blank'); 

Вы можете добавить дополнительные переменные GET или данные POST с этим.

по-моему (я не флэш-кодер) …

вам нужно нажать на php (вместо того, чтобы вытащить из swf), что означает, что ваш флеш-фильм должен сообщать о состоянии LSO, если он изменится. Зачем? потому что ваш сервер не знает исполняемые swf-экземпляры.

вы можете это сделать …

  • либо постоянно отправляйте сериализованную версию LSO на сервер (и сохраняйте его в файле или db)

    => если вы запустите свой php-скрипт, он работает с самыми последними данными

    очень простой и прямой. вероятно, путь.

  • или создать сервер сокетов в вашем php-скрипте. swf теперь пытается постоянно подключаться к серверу. если сервер отвечает, выведите сериализованный LSO.

    => если вы запустите свой php-скрипт, он блокируется до тех пор, пока не будет выполнено соединение, а затем будет работать с данными в реальном времени

    запись сервера сокетов в php не является ни тривиальной, ни жесткой, но вы должны иметь возможность запускать php в режиме cli

проблемы:

  1. если флеш-ролик является общедоступным, может быть много запущенных экземпляров – вам нужно рассказать клиентам обособленно, иначе вы не будете знать, кто сообщает, что это LSO.

  2. если есть много экземпляров этого флеш-ролика, вы будете постоянно обстреляны запросами.

  3. для решения сервера сокетов вам понадобится …

    • иметь возможность запускать php как cli-app
    • открытый порт в брандмауэре. Сторонние хостеры не позволят этого (пока вам не повезет или не повезет).

могут быть другие способы, о которых я не знаю.