2014-09-17 4 views
0

Я разрабатываю Flash-приложение с помощью Flex, и я использую amfPHP (V2.2.1) для связи с PHP-сервером. Все было хорошо, так как мой веб-хостер изменился с Confixx на Plesk и изменил некоторые настройки на веб-сервере, поэтому после изменения у меня всегда была ошибка «Net.Connection.Call.Failed HTTP: 200» в вызове службы amfPHP. После некоторых исследований я понял, что заголовок ответа теперь отправлен с помощью «Content-Encoding gzip» и отключил его в файле .htaccess с «RequestHeader unset Accept-Encoding». После этого все было хорошо с моими сервисами, и они работают теперь, как и раньше.AMFPHP и Content-encoding gzip на Apache

Мой вопрос. Есть ли другой способ обойти эту проблему? Есть ли настройка для amfPHP, поэтому она может работать с сжатием gzip или другой передовой практикой?

Заранее спасибо.

Добавить:
Я нашел AMFPHP плагин AmfphpGzip, но если включить его, Flash выдает ошибку "Error: Error # 2030: Конец файла возникновении ошибки.". Я не знаю, почему это происходит. Может быть, данные, которые я хочу получить, - большие (проанализированный файл language.ini от Joomla)?

Добавить 2:
(Сделано это часть как ответ ниже)

ответ

0

Это кажется маловероятным, что ини-файл, содержащий только текст слишком много для обработки на сервере. Чтобы узнать, что происходит не так, вам нужно копать немного глубже. См. http://www.silexlabs.org/amfphp/documentation/troubleshooting-and-debugging-your-project/ , в частности «Получение информации о ошибках PHP». Однако вы можете спросить себя, не стоит ли беспокоиться. Я не вижу огромного значения в gzipping ini-файле. Вероятность получения полосы пропускания, вероятно, довольно скромна.

+0

Я удалил все предыдущие комментарии, потому что это была совершенно другая проблема, и я получил решение сейчас. Я добавлю это к моему вопросу выше. Но да, это не стоит проблем, но мне пришлось иметь дело с этим, потому что компонент Joomla, который я разрабатываю, должен работать из коробки, без необходимости редактировать файл .htaccess пользователем, и это на самом деле не решение полностью отключить кодирование передачи на сервере. В любом случае - спасибо за ваш ответ и вашу помощь! – Bio

0

Я думаю, что нашел решение сейчас. В плагине AmfphpGzip, есть функция, которая возвращает длину заданной строки:

protected function strlen($text){ 

    $length = 0; 

    if (function_exists('mb_strlen')) { 
     $length = mb_strlen($text); 
    } 
    else { 
     // Do not count UTF-8 continuation bytes. 
     $length = strlen(preg_replace("/[\x80-\xBF]/", '', $text)); 
    } 

    return $length; 
} 

Flash-броски «Error: Error # 2030: Конец файла встречался.» потому что Content-Length в заголовке ответа неверно (данные из ini-файла в ответе amf всегда усекались в момент появления ошибки). Поэтому я изменил эту функцию:

protected function strlen($text) 
{ 
    return strlen($text); 
} 

Теперь это хорошо работает на моем веб-сайте и на моем локальном сервере. Файлы Joomla language.ini сохраняются как UTF-8 (без спецификации), а также все немецкие специальные символы, такие как ü, ß или ö, являются правильными в ответе. Кроме того, все другие служебные вызовы работают хорошо, поэтому, я думаю, strlen достаточно, чтобы эта функция получила правильную длину строки.

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

  • Нет связанных вопросов^_^