Foros del Web » Programando para Internet » PHP »

Problema al comprimir web

Estas en el tema de Problema al comprimir web en el foro de PHP en Foros del Web. Hola, buenos días. Estoy intentando comprimir una web usando gzip y lo único que me muestra son caracteres extraños. El código que uso para comprimirla ...
  #1 (permalink)  
Antiguo 02/02/2009, 06:48
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 1 mes
Puntos: 1
Problema al comprimir web

Hola, buenos días.

Estoy intentando comprimir una web usando gzip y lo único que me muestra son caracteres extraños.

El código que uso para comprimirla es el siguiente:

Código PHP:
  ob_start();
  
ob_implicit_flush(0);

  include (
"index_white.php");

  
$contents ob_get_contents();
  
ob_end_clean();

  
header("Content-Encoding: gzip");

  echo 
"\x1f\x8b\x08\x00\x00\x00\x00\x00";

  
$Size strlen($contents);
  
$Crc crc32($contents);

  
$contents gzcompress($contents9);

  
$contents substr($contents0strlen($contents) - 4);

  echo 
$contents;

  
gzip_PrintFourChars($Crc);
  
gzip_PrintFourChars($Size);

  function 
gzip_PrintFourChars($Val) {
    for (
$i 0$i 4$i ++) {
      echo 
chr($Val 256);
      
$Val floor($Val 256);
    }
  } 
He hecho un phpinfo() en mi servidor y según lo que dice aquí parece que el host cuenta con lo necesario para poder efectuar la compresión, por lo que me temo que por mi propia inexperiencia, estoy haciendo algo mal.

¿Alguien sabría decirme que estoy obviando o en qué estoy errando?


Muchas gracias a todos por anticipado y un saludo.
  #2 (permalink)  
Antiguo 02/02/2009, 10:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al comprimir web

Hola Koden,

Porque no en lugar de hacer eso usas ob_start('ob_gzhandler') que hace toda la compresión por ti?

Saludos
  #3 (permalink)  
Antiguo 02/02/2009, 10:28
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Problema al comprimir web

Muchas gracias por tu respuesta.

Al intentarlo como tú me has dicho, me ha saltado este warning:

Código:
Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' conflicts with 'zlib output compression'
Según he estado leyendo, esto se debe a la configuración del servidor de la web donde tengo la web, por lo que la pregunta es... ¿Puedo cambiar esta configuración sin tener que echar mano del php.ini?

Gracias a todos por vuestra ayuda.
  #4 (permalink)  
Antiguo 02/02/2009, 10:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Problema al comprimir web

Me autocontesto:

He estado intentando cambiar el valor mediante ini_set, tal que así:

Código PHP:
<?php
  ini_set 
("zlib.output_compression",0);
  
ob_start("ob_gzhandler");
?>
<!-- Código PHP y HTML de la web -->
Pero sigo sin poder dar con ello.
  #5 (permalink)  
Antiguo 02/02/2009, 10:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al comprimir web

Que error te muestra al usar el ini_set?

Saludos
  #6 (permalink)  
Antiguo 02/02/2009, 11:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Problema al comprimir web

Ahora mismo tengo el archivo index así:

Código PHP:
    ini_set ("zlib.output_compression",0);
    
ob_start("ob_gzhandler");
    require (
"index_white.php"); 
Y me da exactamente el mismo resultado. (El warning antes mencionado, vaya)

Por otra parte, hice un archivo con un ini_get_all para ver la configuración del host y me salió que está configurado bajo estos parámetros:

Código:
[zlib.output_compression] => Array ( [global_value] => 1 [local_value] => 1 [access] => 7 )
[zlib.output_compression_level] => Array ( [global_value] => -1 [local_value] => -1 [access] => 7 )
[zlib.output_handler] => Array ( [global_value] => [local_value] => [access] => 7 )
De ahí mi desconcierto... Se supone que está a 1, pero por mucho que intento cambiarlo para ese script en concreto... ¡Pues no hay manera!



De todos modos, muchas gracias por tu ayuda, a ver si gracias a tu buen hacer puedo encontrar alguna manera.
  #7 (permalink)  
Antiguo 02/02/2009, 11:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al comprimir web

Mmmm según veo, cuando esta activo zlib.output_compression tu pagina es automaticamente comprimida, sin que tu hagas nada, es por eso que hay colisión cuando usas el ob_start('ob_gzhandler');

Saludos
  #8 (permalink)  
Antiguo 02/02/2009, 11:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Problema al comprimir web

Es que tenía entendido que el código fuente de una web comprimida se veía como un bloque de texto en una única línea, claro que tampoco había confirmado este extremo.

De todos modos, muchas gracias por tu ayuda.
  #9 (permalink)  
Antiguo 02/02/2009, 11:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al comprimir web

Mmmm no, solo la pagina se envia como comprimida al explorador, el explorador la descomprime "on-the-fly" ejecuta y renderea, el código fuente como tal no se ve afectado en lo mínimo.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:57.