update page now

gzwrite

(PHP 4, PHP 5, PHP 7, PHP 8)

gzwriteAusgabe in gz-komprimierte Dateien

Beschreibung

gzwrite(resource $stream, string $data, ?int $length = null): int|false

gzwrite() schreibt den Inhalt von data in die angegebene gz-Datei aus.

Parameter-Liste

stream

Ein gz-Dateizeiger. Dieser muss gültig sein und auf eine Datei zeigen, die erfolgreich mit gzopen() geöffnet wurde.

data

Der auszugebende String.

length

Die Anzahl unkomprimierter Bytes, die ausgegeben werden sollen. Wenn angegeben, wird nach length aus data geschriebenen Bytes abgebrochen, wenn bis dahin das Ende des Strings nicht erreicht ist.

Rückgabewerte

Gibt die Anzahl der (unkomprimierten) Bytes zurück, die auf den gegebenen gz-Stream ausgegeben wurden. Bei einem Fehler wird false zurückgegeben..

Changelog

Version Beschreibung
8.0.0 length ist jetzt ein Nullable-Typ; vorher war der Standardwert 0.
7.4.0 Falls ein Fehler auftritt, gibt diese Funktion jetzt false zurück; vorher wurde 0 zurückgegeben.

Beispiele

Beispiel #1 gzwrite()-Beispiel

<?php
$string
= 'Zu komprimierende Daten';
$gz = gzopen('somefile.gz','w9');
gzwrite($gz, $string);
gzclose($gz);
?>

Siehe auch

  • gzread() - Liest binary-safe aus einer gz-Datei
  • gzopen() - Öffnet eine gz-Datei

add a note

User Contributed Notes 1 note

up
4
calmarius at nospam dot atw dot hu
17 years ago
gz compression is often used with tar archives. Building tar archives is quite easy. Here is a code snipplet which can be used for building tar archives before compressing them to tar.gz.

<?php

//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
// Adds file header to the tar file, it is used before adding file content.
// f: file resource (provided by eg. fopen)
// phisfn: path to file
// archfn: path to file in archive, directory names must be followed by '/'
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
function TarAddHeader($f,$phisfn,$archfn)
{
    $info=stat($phisfn);
    $ouid=sprintf("%6s ", decoct($info[4]));
    $ogid=sprintf("%6s ", decoct($info[5]));
    $omode=sprintf("%6s ", decoct(fileperms($phisfn)));
    $omtime=sprintf("%11s", decoct(filemtime($phisfn)));
    if (@is_dir($phisfn))
    {
         $type="5";
         $osize=sprintf("%11s ", decoct(0));
    }
    else
    {
         $type='';
         $osize=sprintf("%11s ", decoct(filesize($phisfn)));
         clearstatcache();
    }
    $dmajor = '';
    $dminor = '';
    $gname = '';
    $linkname = '';
    $magic = '';
    $prefix = '';
    $uname = '';
    $version = '';
    $chunkbeforeCS=pack("a100a8a8a8a12A12",$archfn, $omode, $ouid, $ogid, $osize, $omtime);
    $chunkafterCS=pack("a1a100a6a2a32a32a8a8a155a12", $type, $linkname, $magic, $version, $uname, $gname, $dmajor, $dminor ,$prefix,'');

    $checksum = 0;
    for ($i=0; $i<148; $i++) $checksum+=ord(substr($chunkbeforeCS,$i,1));
    for ($i=148; $i<156; $i++) $checksum+=ord(' ');
    for ($i=156, $j=0; $i<512; $i++, $j++)    $checksum+=ord(substr($chunkafterCS,$j,1));

    fwrite($f,$chunkbeforeCS,148);
    $checksum=sprintf("%6s ",decoct($checksum));
    $bdchecksum=pack("a8", $checksum);
    fwrite($f,$bdchecksum,8);
    fwrite($f,$chunkafterCS,356);
    return true;
}
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
// Writes file content to the tar file must be called after a TarAddHeader
// f:file resource provided by fopen
// phisfn: path to file
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
function TarWriteContents($f,$phisfn)
{
    if (@is_dir($phisfn))
    {
        return;
    }
    else
    {
        $size=filesize($phisfn);
        $padding=$size % 512 ? 512-$size%512 : 0;
        $f2=fopen($phisfn,"rb");
        while (!feof($f2)) fwrite($f,fread($f2,1024*1024));
        $pstr=sprintf("a%d",$padding);
        fwrite($f,pack($pstr,''));
    }
}
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
// Adds 1024 byte footer at the end of the tar file
// f: file resource
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
function TarAddFooter($f)
{
    fwrite($f,pack('a1024',''));
}

?>
To Top