SELECT * FROM Vzakladke.net

Статьи об автоматизации и программировании

Как создать архивный файл на PHP с расширением .gz?

 

 

Чтобы сжать файл используя GZIP на сервере с помощью PHP можно использовать например такой трюк:

$file = "test.txt";
$gzfile = "test.gz";
$fp = gzopen ($gzfile, 'w9'); // w9 - сильное сжатие
gzwrite ($fp, file_get_contents($file));
gzclose($fp);

Но лучше на мой взгляд написать сразу функцию архивирования в GZIP.

 

Сначала устанавливаем разрешения нашему скрипту:

 ini_set("display_errors",1);
 error_reporting(E_ALL);
 set_time_limit(0);
if (!set_time_limit(0)) ini_set("max_execution_time", 0);

// php_flag max_execution_time 30 // -> htaccess 

 

Теперь создадим функцию gzip_file и вызывать мы ее будем например так: if (gzip_file('all.sql')!=false) echo 'ok';

function gzip_file($source, $dest='', $level=9)
{
    if ($dest == '')
        $dest = $source.'.gz';
        
    $mode = 'wb'.$level;
    $error=false;
    
    if($fp_out = gzopen($dest,$mode))
    {
        if($fp_in = fopen($source,'rb'))
        {
            while(!feof($fp_in))
                gzwrite($fp_out,fread($fp_in,1024*512));
            fclose($fp_in);
        }
        else
            $error = true;
        
        gzclose($fp_out);
    }
    else
        $error = true;
    
    if($error)
        return false;
    else
        return filesize($dest);
}

 

 

Дата публикации: 2015-10-14 22:01:41

PHP

1

Отзывы:

Артем
Удалять файл оригинала после сжатия тоже нужно unlink($file);

Ваше имя:

Ваш e-mail (необязательно):

Сообщение:

Captcha