AMFPHP и контент-кодирование gzip на Apache

Я разрабатываю приложение 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, чтобы он мог работать со сжатием gzip, или другой лучший метод для этого?

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

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

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

0

Решение

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

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;
}

Флэш-память выдает «Ошибка: Ошибка № 2030: обнаружен конец файла». причина, по которой Content-Length в заголовке ответа была неправильной (данные из ini-файла в ответе amf всегда усекались в момент появления ошибки). Так что я изменил эту функцию на это:

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

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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector