PHP Doku:: Öffnet gz-Dateien - function.gzopen.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzErweiterungen zur Datenkompression und ArchivierungZlib-KomprimierungZlib-Funktionengzopen

Ein Service von Reinhard Neidl - Webprogrammierung.

Zlib-Funktionen

<<gzinflate

gzpassthru>>

gzopen

(PHP 4, PHP 5)

gzopenÖffnet gz-Dateien

Beschreibung

resource gzopen ( string $filename , string $mode [, int $use_include_path = 0 ] )

Öffnet eine gzip (.gz) Datei zum Lesen oder Schreiben.

gzopen() kann auch Dateien lesen die nicht im gzip-Format vorliegen. In diesem Fall liest gzread() dierekt aus der Datei ohne zu entpacken.

Parameter-Liste

filename

Der Dateiname.

mode

Wie in fopen() (rb oder wb), allerdings kann auch der Kompressionsgrad (wb9) oder die Strategie angegeben werden: f für gefilterte Daten (wb6f) oder h für Huffman-Kompression (wb1h). (Weitere Informationen über den Strategieparameter finden Sie in der Beschreibung zu deflateInit2 in zlib.h.)

use_include_path

Sie können diesen optionalen Parameter auf 1 setzen um die Datei auch im include_path suchen zu lassen.

Rückgabewerte

Gibt einen Dateidescriptor auf die geöffnete Datei zurück. Alles was Sie von nun an hieraus lesen wird transparaent entpackt und alles was Sie schreiben wird komprimiert.

Schlägt das Öffnen fehl so gibt die Funktion FALSE zurück.

Beispiele

Beispiel #1 gzopen() Beispiel

<?php
$fp 
gzopen("/tmp/file.gz""r");
?>

Siehe auch

  • gzclose() - Schließt eine geöffnete gz-Datei


6 BenutzerBeiträge:
- Beiträge aktualisieren...
plasma
6.09.2008 5:06
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 );
?>
katzlbtjunk at hotmail dot com
23.04.2008 21: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.
rob at digital-crocus dot com
1.06.2005 14: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.
pentek_imre at mailbox dot hu
29.01.2005 19: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.
dtorop932 at hotmail dot com
21.10.2004 21: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");
?>
-delete-this-part-dubious at 2xtreme dot net
3.01.2002 4: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...



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)