Manuale PHP
Indietro |  | Avanti

# CLXIX. 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: Builtin 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`.

Tabella 1. 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.

Esempio 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($zp, 3);
// 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";
?>`

Indietro | Partenza | Avanti
zip_read | Risali | gzclose