Create and download Zip folder in php

Create and download Zip folder in php
ini_set('max_execution_time', 60000);

// Zip destination path
$zipDestination =  __DIR__.'/images/';
// Use php zip library
$zip = new ZipArchive();
touch($zipDestination); // create zip files
if($zip->open($zipDestination, ZipArchive::CREATE)!==TRUE) {
    exit("cannot open <$zipDestination>\n");
// If you want to add all files from folder 
$pattern = __DIR__.'/bagImages';
// It will read all files of bagImages folder
$files = glob($pattern.'/*.*');

foreach($files as $file) {
$fileinfo = pathinfo($file);

// if you want add sub folder files also use.
$rootPath = realpath('images');
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
foreach ($files as $name => $file)
    // Skip directories (they would be added automatically)
    if (!$file->isDir())
        // Get real and relative path for current file
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($rootPath) + 1);

        // Add current file to archive
        $zip->addFile($filePath, $relativePath);
$filename = "";
$filepath = __DIR__.'/productimages/';
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath.$filename));

@unlink($filepath.$filename); // if you want to delete files.