IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Gzip encoded output in php(+) (https://www.imho.ws/showthread.php?t=85431)

Sheryld 11.05.2005 12:10

Gzip encoded output in php(+)
 
Собственно проблема в том, что динамические(но не все) страницы(поиск, например) не работают.

Делаю примерно так:

$content = $t->get(); //контент из темплейта(html code)
$crc = pack('V',crc32($content));
$size = pack('V',strlen($content));
$content = gzcompress($content); //сжимаем
$output = "\x1f\x8b\x08\x00\x00\x00\x00\x00"; //заголовок gzip
$output .= substr($content, 0, strlen($content) - 4); //«откусываем» последних 4 байта
$output .= $crc; //контрольная сумма
$output .= $size; //длина
Header("Content-Encoding: gzip");
echo $output;
exit;

Проблема в том, что длина страницы постоянно меняется(даже если она по идее одинаковая должна быть), т.е. проблема видимо кроется в рассинхронизации вызова фун-ий. Т.е. нерпавильно считается длина или записываются не все данные. В следствии чего бразуер выдает либо gzip-контент, либо пустую страницу.

С другими страницами все ок(в том числе и динамическими, но менее нагруженными).

страница поиска обрабатывает параметры через get,
т.е. урлы вида:

index.php?
action=search&keywords=keywords&searchFilter=onlyTitle&searchType=or

RaZEr 11.05.2005 12:15

А в чём проблема использовать стандартные ф-ии пхп?

Sheryld 11.05.2005 12:17

Что значит использовать стандартные фун-ии? Я и так использую:)

RaZEr 11.05.2005 12:20

ob_gzhandler

Sheryld 11.05.2005 12:31

да тоже самое, видимо это полный аналог: ob_gzhandler :biggrin:

RaZEr 11.05.2005 12:35

Тогда видимо глюк пхп. Используй возможности апача :biggrin:

AleXXXSoft 11.05.2005 12:45

скрипт убивается по таймауту, данные повисают и броузеру не уходят, в броузере в таком случае пустая страница и надпись "Готово."

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

P.S. либо попробовать сжимать с меньшим коэффициентом компрессии

Sheryld 11.05.2005 12:50

эээ. да она выполняется довольно быстро:)

хостинг: собственный сервер(в стойке у хостера). 2 x Xeon и т.д.:)

AleXXXSoft 11.05.2005 12:52

Цитата:

Sheryld:
эээ. да она выполняется довольно быстро
засекал? :)

Цитата:

Sheryld:
хостинг: собственный сервер(в стойке у хостера). 2 x Xeon и т.д.
а set_time_limit(0) не спасает? :)

Sheryld 11.05.2005 12:59

оно даже с loclahost-а не работает, остальные страницы вроде работают нормально:)

AleXXXSoft 11.05.2005 13:05

ну тогда mod_deflate в руки :) он и удобнее и настроек много, и скрипты проще будут...

P.S. а почему все-таки не использовать ob_gzhandler?

Sheryld 11.05.2005 13:19

а при его использовании вообще интересно:

Страницы которые у меня не обрабатывались моей функцией, им игнорируются, т.е. сжатия не происходит(смотрю по логам апачи), на других страницах, аналогично моей функции:)

или меня уже глючит:)

AleXXXSoft 11.05.2005 13:21

оно не глючит, просто есть некоторые ограничения, например слишком маленькие и слишком большие страницы оно не обрабатывает..., да и жмется только тогда, когда броузер попросит в заголовке (Accept-Encoding: чё-то там)

Sheryld 11.05.2005 13:23

вот поэтому своя функция лучше:)
т.к. ты всегда знаешь, что она делает.


Часовой пояс GMT +4, время: 08:19.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.