Forum und email

Funzioni di compressione Zlib

Introduzione

questo modulo permette di leggere e scrivere in modo trasparente i file compressi con gzip (.gz), attraverso versioni di molte delle funzioni del filesystem in grado di operare su file compressi con gzip (ed anche su file non compressi, ma non con i socket).

Nota: La versione 4.0.4 ha introdotto un wrapper di fopen per i file .gz, che permette di usare una speciale URL 'zlib:' per accedere ai file compressi utilizzando le normali funzioni di accesso ai file [ f*() ], semplicemente anteponendo al nome del file o percorso il prefisso 'zlib:' nella chiamata a fopen().
Nella versione 4.3.0, questo prefisso è stato cambiato in 'zlib://' per evitare ambiguità con i nomi di file contenenti il carattere ':'.
Questa funzionalità richiedere una libreria di runtime C che fornisca la funzione fopencookie(). Al momento sembra che la GNU libc sia l'unica libreria a fornire questa funzionalità.

Requisiti

Questo modulo usa le funzioni di » zlib di Jean-loup Gailly e Mark Adler. Si deve utilizzare una versione >= 1.0.9 con questo modulo.

Installazione

Zlib support in PHP is not enabled by default. You will need to configure PHP --with-zlib[=DIR]

La versione per Windows di PHP ha già compilato il supporto per questo modulo. Non occorre caricare alcun modulo addizionale per potere utilizzare queste funzioni.

Nota: Built-in support for zlib on Windows is available with PHP 4.3.0.

Configurazione di Runtime

Il comportamento di queste funzioni è influenzato dalle impostazioni di php.ini.

L'estensione zlib permette di comprimere in modo trasparente le pagine on-the-fly, se il browser supporta questa funzionalità. Quindi ci sono due opzioni nel file di configurazione php.ini.

Opzioni di configurazione di Zlib
Nome Default Configurabile in
zlib.output_compression "Off" PHP_INI_ALL
zlib.output_compression_level "-1" PHP_INI_ALL
zlib.output_handler "" PHP_INI_ALL
Per ulteriori dettagli e definizioni delle costanti PHP_INI_* vedere ini_set().

Breve descrizione dei parametri di configurazione.

zlib.output_compression boolean/integer

Decide se comprimere le agine in maniera trasparente. Se questa opzione è impostata a "On" in php.ini o nella configurazione di Apache, le pagine vengono compresse se il browser invia un header "Accept-Encoding: gzip" o "deflate". Gli header "Content-Encoding: gzip" (oppure "deflate") e "Vary: Accept-Encoding" sono aggiunti all'output.

Questa opzione accetta anche valori interi oltre ai booleani "On"/"Off", in questo modo è possibile impostare la dimensione del buffer (il default è 4KB).

Nota: output_handler deve essere vuoto se quest opzione è 'On' ! Altrimenti occorre utilizzare zlib.output_handler.

zlib.output_compression_level integer

Livello di compressione utilizzato per la compressione trasparente dell'output.

zlib.output_handler string

Non si possino specificare ulteriori handler dell'output se zlib.output_compression è attivo. Questa impostazione è come output_handler ma con un ordine differente.

Tipi di risorse

Questa estensione non definisce alcun tipo di risorsa.

Costanti predefinite

Queste costanti sono definite da questa estensione e sono disponibili solo se l'estensione è stata compilata nel PHP o se è stata caricata dinamicamente a runtime.

FORCE_GZIP (integer)
FORCE_DEFLATE (integer)

Esempi

Questo esempio apre un file temporaneo e vi scrive una stringa di prova, quindi stampa il contenuto del file due volte.

Example#1 Esempio di Zlib

<?php

$filename 
tempnam('/tmp''zlibtest') . '.gz';
echo 
"<html>\n<head></head>\n<body>\n<pre>\n";
$s "Only a test, test, test, test, test, test, test, test!\n";

// apre il file in scrittura con la massima compressione
$zp gzopen($filename"w9");

// scrive la stringa sul file
gzwrite($zp$s);

// chiude il file
gzclose($zp);

// apre il file in lettura
$zp gzopen($filename"r");

// legge 3 caratteri
echo gzread($zp3);

// stampa fino alla fine del file e lo chiude
gzpassthru($zp);
gzclose($zp);

echo 
"\n";

// apre il file e stampa il contenuto (la seconda volta)
if (readgzfile($filename) != strlen($s)) {
        echo 
"Errore nelle funzioni zlib!";
}
unlink($filename);
echo 
"</pre>\n</body>\n</html>\n";

?>

Indice dei contenuti

  • gzclose — Chiude un puntatore a file gz
  • gzcompress — Comprime una stringa col metodo COMPRESS
  • gzdecode — Decodes a gzip compressed string
  • gzdeflate — Comprime una stringa con il metodo DEFLATE
  • gzencode — Crea una stringa compressa con gzip
  • gzeof — Test for end-of-file on a gz-file pointer
  • gzfile — Read entire gz-file into an array
  • gzgetc — Get character from gz-file pointer
  • gzgets — Get line from file pointer
  • gzgetss — Get line from gz-file pointer and strip HTML tags
  • gzinflate — Inflate a deflated string
  • gzopen — Open gz-file
  • gzpassthru — Output all remaining data on a gz-file pointer
  • gzputs — Alias di gzwrite
  • gzread — Binary-safe gz-file read
  • gzrewind — Rewind the position of a gz-file pointer
  • gzseek — Seek on a gz-file pointer
  • gztell — Tell gz-file pointer read/write position
  • gzuncompress — Uncompress a compressed string
  • gzwrite — Binary-safe gz-file write
  • readgzfile — Output a gz-file
  • zlib_get_coding_type — Returns the coding type used for output compression