JavaScript Editor Javascript validator     Web page editor 

Dynamic generation of archive files for a gallery

Dynamic generation of archive files for a gallery -- How to use File_Archive for a photo/video gallery

One possible use case of File_Archive is to dynamically generate archives that contain pictures or videos from a gallery.

The choice of the file format is important if you want an efficient generation. Let's see what are the possibilities:

1. Tar
2. Tgz, Tbz
3. Zip

1. Tar

Pros: Generation very efficient, constant memory usage, no need to cache

Cons: No compression (but anyway images or video can hardly be compressed), not as widely used as Zip

2. Tgz, Tbz

Pros: Very high compression ratio, constant memory usage

Cons: Can't be cached, needs a lot of CPU at each generation

3. Zip

Pros: Intermediate result can be cached, compressed, you can choose the compression level, widely used

Cons: Compression ratio lower than for Tgz/Tbz

We will focus on Tar and Zip generation, Tgz and Tbz are too CPU expensive for an "on the fly" archive generation.

Tar generation

require_once "File/Archive.php";

// $files is an array of path to the files that must be added to the archive

Zip generation

The main advantages of the Zip generation is that it is not very expensive (due to the ability to cache the result), and widely used. I think 2 viable options are to generate uncompressed Zip archives (since you don't reduce a lot the size of picture and video files by compressing them) or to generate compressed Zip archive using a cache system.

Putting it all together

Since generating a zip or a tar archive is pretty much the same code, you can write a simple code that lets the user choose what format he wants. The following code is taken from a code I really use in my gallery.

JavaScript Editor Javascript validator     Web page editor