PHP Classes

Zip Stream: Create ZIP archives for large number of files

Recommend this page to a friend!
  Info   View files View files (27)   DownloadInstall with Composer Download .zip   Reputation   Support forum (8)   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-01-09 (4 days ago) RSS 2.0 feedNot enough user ratingsTotal: 1,396 This week: 2All time: 2,790 This week: 204Up
Version License PHP version Categories
zip-stream 2.0.18GNU Lesser Genera...5.3PHP 5, Files and Folders, Compression
Description 

Authors

A. Grandt
Greg Kappatos
Adam Schmalhofer


Contributor

This class can be used to create ZIP archives for large number of (large) files.

ZipStream will send data to the client as the files are added to it, this avoids the problem of potential time-outs if you have to add a large number of files, such as site backups.
ZipStream can also handle large files or dynamically generated content.

Picture of Asbjorn Grandt
Name: Asbjorn Grandt <contact>
Classes: 10 packages by
Country: Denmark Denmark
Innovation award
Innovation award
Nominee: 4x

Details

PHP Zip

A pair of PHP classes to generate zip files.

The projects that started these two classes are hosted on PHPClasses.org at the addresses: Zip : http://www.phpclasses.org/package/6110 ZipStream: http://www.phpclasses.org/package/6616

* WARNING: THE CURRENT VERSION OF PHPZip MAY FAIL IF THE SERVER HAS mbstring.func_overload INSTALLED AND ACTIVE! OLDER VERSIONS OF PHPZip WILL FAIL IF THE SERVER HAS mbstring.func_overload INSTALLED AND ACTIVE! EXPERIMENTAL FEATURES HAVE BEEN ADDED TO ALLEVIATE THE LOBOTOMIZATION OF PHP, CAUSED BY mbstring.func_overload *

Note: PHPZip currently uses the 32-bit deflate, and is limited by that. The largest files that can be added are 4GB, and the total size of the archive can't exceed 4GB either.

Zip.php generates the Zip file in memory (or temp file) allowing the parent script to save the final Zip file elsewhere, and/or send it to the user. ZipStream has much of the same features and functions of Zip.php, with a few notable differences, it does not cache and build the zip file on the server, instead it'll send the file to the user as a stream.

See the examples for example usage. The php files have "some" documentation in them in the form of Javadoc style function headers.

NOTE: Please ensure that output buffering is disabled when using especially ZipStream. It defeats the purpose of the class, and large zip files may cause a memory exceeded exception. NOTE2: THe Zip and ZipStream classes support UTF-8 in file paths and file comments, and will autodetect UTF-8 strings to that end, however it is up to the user to ensure that other Multibyte chracter sets aren't sent to the class.

Installation

Import

Add this requirement to your composer.json file:

    "phpzip/phpzip": ">=2.0.7"

Composer

If you already have Composer installed, skip this part.

Packagist, the main composer repository has a neat and very short guide.

Or you can look at the guide at the Composer site.

The easiest for first time users, is to have the composer installed in the same directory as your composer.json file, though there are better options.

Run this from the command line:

php -r "readfile('https://getcomposer.org/installer');" | php

This will check your PHP installation, and download the composer.phar, which is the composer binary. This file is not needed on the server though.

Once composer is installed you can create the composer.json file to import this package.

{
    "require": {
        "phpzip/phpzip": ">=2.0.7",
        "php": ">=5.3.0"
    }
}

Followed by telling Composer to install the dependencies.

php composer.phar install

this will download and place all dependencies defined in your composer.json file in the vendor directory.

Finally, you include the autoload.php file in the new vendor directory.

<?php
    require 'vendor/autoload.php';
    .
    .
    .

TODO:

  • Documentation, no one reads it, but everyone complains if it is missing.
  • Better examples to fully cover the capabilities of the Zip classes.
  • more TODO's.

  Files folder image Files  
File Role Description
Files folder imageDocs (1 file)
Files folder imagelegacy (10 files)
Files folder imagesrc (1 directory)
Files folder imagetests (2 files)
Accessible without login Plain text file composer.json Data Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
Accessible without login Plain text file README.md Doc. Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.

  Files folder image Files  /  Docs  
File Role Description
  Accessible without login Plain text file APPNOTE-6.3.4.TXT Doc. Zip file specification

  Files folder image Files  /  legacy  
File Role Description
  Accessible without login Plain text file bootstrap.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file composer.json Data Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file README.txt Doc. Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file Zip.ErrorCatch1.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file Zip.Example1.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file Zip.Example2.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file Zip.Example3.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file ZipStream.Example1.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file ZipStream.Example1s.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Accessible without login Plain text file ZipStream.Example2.php Example Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.

  Files folder image Files  /  src  
File Role Description
Files folder imageZip (5 directories)

  Files folder image Files  /  src  /  Zip  
File Role Description
Files folder imageCore (3 files)
Files folder imageException (6 files)
Files folder imageFile (1 file)
Files folder imageListener (1 file)
Files folder imageStream (1 file)

  Files folder image Files  /  src  /  Zip  /  Core  
File Role Description
  Plain text file AbstractException.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Plain text file AbstractZipArchive.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Plain text file ZipUtils.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.

  Files folder image Files  /  src  /  Zip  /  Exception  
File Role Description
  Plain text file BufferNotEmpty.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Plain text file HeaderPositionError.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Plain text file HeadersSent.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Plain text file IncompatiblePhpVersion.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Plain text file InvalidPhpConfiguration.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.
  Plain text file LengthMismatch.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.

  Files folder image Files  /  src  /  Zip  /  File  
File Role Description
  Plain text file Zip.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.

  Files folder image Files  /  src  /  Zip  /  Listener  
File Role Description
  Plain text file ZipArchiveListener.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.

  Files folder image Files  /  src  /  Zip  /  Stream  
File Role Description
  Plain text file ZipStream.php Class Version 2.0 for this package. The entire structure have been reworked, and it is now using namespace, meaning that PHP 5.3 is now required as a minimum. See the examples in the legacy folder to see how you can easily migrate to the new structure. Most notable new function added is appendZip, to merge the content of an existing Zip file into the current one without re-compression, using the PHP Zip Merge package, also available here on PHPClasses.

  Files folder image Files  /  tests  
File Role Description
  Accessible without login Plain text file run functional tests.bat Data Auxiliary data
  Accessible without login Plain text file run unit tests.bat Data Auxiliary data

Downloadzip-stream-2024-01-09.zip 76KB
Downloadzip-stream-2024-01-09.tar.gz
Install with ComposerInstall with Composer
Needed packages  
Class DownloadWhy it is needed Dependency
PHP Zip Merge Download .zip .tar.gz Used by the appendZip function Conditional
Relative Path Download .zip .tar.gz Clean up dynamically builded paths before adding them to the zip file. Required
Bin String Download .zip .tar.gz Work around cases where mbstring.func_overload is enabled Required
 Version Control Unique User Downloads Download Rankings  
 100%
Total:1,396
This week:2
All time:2,790
This week:204Up