Создание zip-архива на лету
Для начала хочу посоветовать ознакомится с тем как сделать StdClass – из обычного массива.
На одном проекте мне понадобилось периодически создавать zip-архивы из файлов. Для этого можно воспользоваться классом, написанным Rochak Chauhan, который я скачал с PHP Classes. Но захотелось пойти дальше и получить возможность архивировать папки целиком. Для этого можно воспользоваться новым классом, который будет наследоваться от класса, упаковывающего файлы.
Код класса получается коротенький:
<?php
class createDirZip extends createZip {
function get_files_from_folder($directory, $put_into) {
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if (is_file($directory.$file)) {
$fileContents = file_get_contents($directory.$file);
$this->addFile($fileContents, $put_into.$file);
} elseif ($file != '.' and $file != '..' and is_dir($directory.$file)) {
$this->addDirectory($put_into.$file.'/');
$this->get_files_from_folder($directory.$file.'/', $put_into.$file.'/');
}
}
}
closedir($handle);
}
}
?>
Здесь мы используем функции opendir и readdir, чтобы получить содержимое папок. Теперь мы можем использовать наш класс, и заархивировать, например папку folder_example. Делается это так:
<?php
require_once('createzip.php');
require_once('createzipfromdir.php');
$createZip = new createDirZip;
$createZip->get_files_from_folder('folder_example/', '');
$fileName = 'archive.zip';
$fd = fopen ($fileName, 'wb');
$out = fwrite ($fd, $createZip->getZippedfile());
fclose ($fd);
$createZip->forceDownload($fileName);
?>
Скачать архив можно тут – Создаем zip на php.
Архив сайта мы то создали, но не стоит забывать, что и раскрутка сайта дело очень важное.


Спасибо, стараемся