Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вывести степень компрессии?
 
 автор: Maxam   (02.02.2011 в 15:54)   письмо автору
 
 

Использую код:
<?php 
if(@$_SERVER['HTTP_ACCEPT_ENCODING']) 
{
$compress strtolower(@$_SERVER['HTTP_ACCEPT_ENCODING']);} 
else 
{
$compress strtolower(@$_SERVER['HTTP_TE']);} 

if(
substr_count($compress,'deflate')) 

function 
compress_output_deflate($output
{return 
gzdeflate($output,4);} 

header('Content-Encoding: deflate'); 
ob_start('compress_output_deflate'); 
ob_implicit_flush(0); 

elseif(
substr_count($compress,'gzip')) 

function 
compress_output_gzip($output
{return 
gzencode($output,4);} 

header('Content-Encoding: gzip'); 
ob_start('compress_output_gzip'); 
ob_implicit_flush(0); 

elseif(
substr_count($compress,'x-gzip')) 

function 
compress_output_x_gzip($output

$x "\x1f\x8b\x08\x00\x00\x00\x00\x00"
$size strlen($output); 
$crc crc32($output); 
$output gzcompress($output,4); 
$output substr($output0strlen($output) - 4); 
$x.= $output
$x.= pack('V',$crc); 
$x.= pack('V',$size); 
return 
$x


header('Content-Encoding: x-gzip'); 
ob_start('compress_output_x_gzip'); 
ob_implicit_flush(0); 

?>
Взял с этого сайта (форума), но не знаю, как вывести статистику из него. Помогите. Спасибо.

  Ответить  
 
 автор: sim5   (02.02.2011 в 16:04)   письмо автору
 
   для: Maxam   (02.02.2011 в 15:54)
 

Компрессия задается аргументом функции, и у вас равна 4. В чем проблемы?

  Ответить  
 
 автор: icq677555   (02.02.2011 в 16:12)   письмо автору
 
   для: sim5   (02.02.2011 в 16:04)
 

Неверно.
Ведь если я сожму гзипом строку длиной во 1000 байт, с уровнем компрессии 5, то она не станет от этого равной 200b.

Автору нужно определить на сколько его страница сжалась после использования компрессии.

  Ответить  
 
 автор: sim5   (02.02.2011 в 16:13)   письмо автору
 
   для: icq677555   (02.02.2011 в 16:12)
 

Так пусть считает проценты, какая проблема?

  Ответить  
 
 автор: icq677555   (02.02.2011 в 16:15)   письмо автору
 
   для: sim5   (02.02.2011 в 16:13)
 

Вот именно. Аргумент в gzcompress никак не участвует в формуле расчета процента.

  Ответить  
 
 автор: icq677555   (02.02.2011 в 16:09)   письмо автору
 
   для: Maxam   (02.02.2011 в 15:54)
 

Используйте ob_content_lenght
Возвращает длинну контента в буфере.

  Ответить  
 
 автор: Maxam   (02.02.2011 в 16:26)   письмо автору
 
   для: icq677555   (02.02.2011 в 16:09)
 

Такой функции не нашёл, но нашёл ob_get_length.

Она такое ощущение, что возвращает то, сколько страница до компрессии. Может ошибаюсь. Я сравниваю показатели с теми, что Opera предлагает.

  Ответить  
 
 автор: icq677555   (02.02.2011 в 16:33)   письмо автору
 
   для: Maxam   (02.02.2011 в 16:26)
 

Сорри, ошибся с именем.

  Ответить  
 
 автор: Maxam   (02.02.2011 в 16:41)   письмо автору
 
   для: icq677555   (02.02.2011 в 16:33)
 

Спасибо, я проверил первый самый вариант, там где решение всё в одной функции - вывод - сжимает хуже, чем мой вариант!

  Ответить  
 
 автор: icq677555   (02.02.2011 в 16:42)   письмо автору
 
   для: Maxam   (02.02.2011 в 16:41)
 

А вы zipDebug поставьте равным нулю.

  Ответить  
 
 автор: Maxam   (02.02.2011 в 16:59)   письмо автору
 
   для: icq677555   (02.02.2011 в 16:42)
 

Я думал это просто отвечает за вывод информации как раз, не?

  Ответить  
 
 автор: Maxam   (02.02.2011 в 17:12)   письмо автору
 
   для: icq677555   (02.02.2011 в 16:42)
 

Не, всё равно не то. Там применяется один вариант сжатия, а в моём примере 3. Как минимум уже у меня код лучше. Вот только не знаю в какое место вставить strlen или что-то типо того.

Делаю:
$bufZipedLen = strlen(ob_start);
Так он показывает до сжатия.

  Ответить  
 
 автор: Maxam   (03.02.2011 в 13:13)   письмо автору
 
   для: Maxam   (02.02.2011 в 15:54)
 

hlp

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования