Эмуляция mod_deflate средствами PHP

209
19 декабря 2016, 19:36

По определенным причинам я не могу использовать ни mod_deflate, ни mod_gzip. Поэтому я пытаюсь реализовать его работу средствами PHP. Есть следующий код:

$filecontents = file_get_contents($filename);
header('Content-Encoding: gzip');
header('Content-Type: '.mime_content_type($filename));
echo gzcompress($filecontents); 

Однако в итоге вылетает ERR_CONTENT_DECODING_FAILED в Хроме. В чем может быть проблема? Браузер, конечно же, поддерживает распаковку gzip.

Answer 1

Все на самом деле просто, нужна только одна строка

<?php
ob_start("ob_gzhandler");
?>
<html>
<body>
<p>Это должно быть сжатой страницей.</p>
</body>
</html>

Курите маны: http://php.net/manual/ru/function.ob-gzhandler.php

Answer 2

http://php.net/manual/en/function.gzencode.php

<?php
    $filecontents = file_get_contents($filename);
    header('Content-Type: '.mime_content_type($filename));
    // mod_gzip
    // header('Content-Encoding: gzip');
    // echo gzencode($filecontents); 
    // mod_deflate
    header('Content-Encoding: deflate');
    echo gzencode($filecontents, 9, FORCE_DEFLATE); 
READ ALSO
Как держать сессии во всех браузерах?

Как держать сессии во всех браузерах?

Веб-приложение для ВК на Laravel, Nginx, PHP-FPMПосетитель приходит с ключом в GET-параметрах, сервер проверяет валидность ключа, и если ключ валидный,...

230
Хотелось бы получить критику на данный код

Хотелось бы получить критику на данный код

Это использование паттерна "Фабрика", прошу помощи понять, правильно ли я его использую

236
Передать другой формат даты в MySQL [дубликат]

Передать другой формат даты в MySQL [дубликат]

На данный вопрос уже ответили:

184
остановить отправку формы ajax

остановить отправку формы ajax

Как при соответствующем ответе от пхп файла остановить отправку формыСейчас форма отправляется в любом случае

181