2012-10-17 1 views
2

Моя цель - раннее очистить заголовок части моего сайта, в то время как мой php-скрипт сшивает остальную страницу вместе и отправляет ее после ее завершения. Важно то, что куски отправляются в браузер. (Я использую Apache/2.2 и PHP/5.3.4)Промывка документа HTML рано - с помощью ini_set ('zlib.output_compression', 'ON')?

Прямо сейчас я пытаюсь достичь этого, вызывая ini_set («zlib.output_compression», «Вкл.») В моем PHP-скрипте. Но если я использую flush() в любом месте моего скрипта, даже в конце, сжатие больше не будет работать.

Вопросы:

а) Используя этот метод Zlib смоет выходной буфер и отправить сжатый кусок в браузер один раз размера этого буфера вывода достигаются?

b) Если есть какой-либо способ тонкого контроля, когда zlip отправит мой кусок не, просто установив размер внутреннего буфера zlib? Значение по умолчанию - 4 КБ.

c) Есть ли хорошие альтернативы для достижения раннего сжатого флеша, возможно, с более тонким контролем относительно времени, когда я хочу его смыть? Может быть, я полностью ошибаюсь :)

+0

Я нашел интересный комментарий к php.net относительно этой проблемы: http: //www.php.нетто/ручной/EN/function.gzopen.php # 105676 – MarcDefiant

ответ

1

Прошло много времени с тех пор, как мне пришлось использовать сжатие zlib на OB (подробнее о том, почему позже). Однако позвольте мне попытаться убедить вас отключить сжатие zlib на OB в PHP. Прежде всего, немного фона, чтобы мы были на одной странице.

КАК О.Б. РАБОТА

Everytime PHP печатает что-то, без OB он будет направлен прямо на апач и от апача в браузер. Вместо этого, с OB, выход останавливается в apache и ждет, пока данные не будут сброшены (в браузер) или пока скрипт не закончится, и данные будут автоматически очищены. Это позволяет сэкономить довольно много времени и ресурсов при создании страницы путем буферизации этапа Apache на веб-браузер процесса.

ПОЧЕМУ БЫ НЕ ИСПОЛЬЗОВАТЬ OB компрессия в PHP

Почему бы вы сделать PHP сжать его? Задача серверов должна выполнять такие задачи (например, сжатие js-файлов). То, что вы «должны» сделать, чтобы радикально освободить apache для обработки php, - это установить NGINX в качестве фронта для публики. Это очень просто настроить как обратный прокси, и вы даже можете установить его на том же сервере, что и php и apache.

Поэтому установите NGINX на порт 80, поставьте apache на 8080 (и разрешите nginx подключаться, но не беспокойтесь, если вы оставите его общедоступным в течение небольшого времени, поскольку оно уже было общедоступным и отлично подходит для отладки, чтобы обойти nginx поэтому проблемы безопасности не должны повышаться - но я рекомендую вам не оставлять его общедоступным для долгого времени). Затем создайте обратный прокси nginx для apache, кешируйте все статические файлы, которые выгружают из apache (потому что nginx служит им вместо этого), что означает, что apache может выполнять больше запросов php, а также получать nginx для выполнения OUTPUT COMPRESSION;) освобождая apache и php, чтобы сделать даже больше запросов. В качестве дополнительного преимущества nginx также может обслуживать статические файлы намного быстрее, чем Apache, а Nginx также использует гораздо меньше бара и может обрабатывать гораздо больше соединений.

Даже новичок nginx мог получить настройку nginx после прочтения нескольких учебников онлайн и заполнить все, что я только что сказал в течение 1 дня. 1 день также хорошо провел.

Помните, что буферизация вывода KEEP включена, однако для PHP для Apache, но отключите сжатие zlib на PHP и включите его вместо nginx.

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

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