This worked unstable for me under high load (50+ files per second):
<?php
$gz = gzopen ( $file, 'w9' );
gzwrite ( $gz, $content );
gzclose ( $gz );
?>
The following works fine:
<?php
$f = fopen ( $file, 'w' );
fwrite ( $f, gzcompress ( $content, 9 ) );
fclose ( $f );
?>
gzopen
(PHP 4, PHP 5)
gzopen — Ouvre un fichier compressé avec gzip
Description
gzopen() ouvre un fichier compressé avec gzip pour y écrire ou y lire des données.
gzopen() peut être utilisée pour lire un fichier qui n'est pas dans un format gzip ; dans ce cas, gzread() lira directement le fichier sans décompression.
Liste de paramètres
- filename
-
Le nom du fichier.
- mode
-
Comme dans la fonction fopen() (rb ou wb) mais peut également inclure un degré de compression (wb9) ou une stratégie : f pour les données filtrées comme wb6f, h pour Huffman only compression comme wb1h. (Lisez la description de deflateInit2 dans le fichier zlib.h pour plus d'informations sur la stratégie des paramètres.)
- use_include_path
-
Vous pouvez définir ce paramètre optionnel à 1, si vous voulez chercher un fichier également dans l'include_path.
Valeurs de retour
Retourne un pointeur de fichier vers le fichier ouvert, ainsi, la lecture depuis ce pointeur de fichier sera des données décompressées et ce que vous y écrirez, sera compressé.
Si l'ouverture échoue, cette fonction retourne FALSE.
Exemples
Exemple #1 Exemple avec gzopen()
<?php
$fp = gzopen("/tmp/file.gz", "r");
?>
gzopen
06-Sep-2008 05:06
23-Apr-2008 09:15
WARNING gzopen and gzread have a major disadvantage. They makes NO checksum and NO length verification of the gzipped data and discard this valuable information. This should be documented here.
01-Jun-2005 02:28
dtorop932 at hotmail dot com's comments, according to my tests, is incorrect. That code wishes to download the entire file before parsing, which is inconvinient. The wget method works though.
29-Jan-2005 07:36
Be aware that when opening a remote file on a http server the gzopen will return by default false after 120 seconds waiting to any answer.
21-Oct-2004 09:04
RE dubious's comment: "Being able to read gzip streams from ftp and http is near the top of my personal wishlist at the moment..."
One way to read a gzip stream over http is to daisychain stream wrappers, e.g.:
<?
$fp = fopen("compress.zlib://http://some.website.org/example.gz", "r");
?>
03-Jan-2002 04:22
"On the fly" gunzipping actually DOES seem to work - it just appears that only LOCAL streams/files (including php://stdin) can be accessed for some reason. I THINK (but have not yet tested) that you could similarly gzopen "php://stdout" and pass a stream of gzipped data to the browser (when run from a web page) or console (when run standalone) through there.
I HAVE tested scripts from the command line like:
wget -q -O- ftp://some.host.net/pub/some_gzip_file.gz | php gunzip_stuff.php
where gunzip_stuff.php would be a script that gzopened "php://stdin" and did gzgets from that stream, and it seems to work fine, but that obviously doesn't help someone wanting to grab gzipped streams from remote sites from a web-based script.
Being able to read gzip streams from ftp and http is near the top of my personal wishlist at the moment...
