当前位置: 首页>>代码示例>>PHP>>正文


PHP PharData::compressFiles方法代码示例

本文整理汇总了PHP中PharData::compressFiles方法的典型用法代码示例。如果您正苦于以下问题:PHP PharData::compressFiles方法的具体用法?PHP PharData::compressFiles怎么用?PHP PharData::compressFiles使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PharData的用法示例。


在下文中一共展示了PharData::compressFiles方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: copyDirToArchive

 public static function copyDirToArchive($dir, $archive, $basename = null, $excludeDirs = null)
 {
     $dir = rtrim($dir, '/\\');
     $basename = $basename ?: basename($dir);
     rex_dir::create(dirname($archive));
     $files = array();
     $iterator = rex_finder::factory($dir)->recursive()->filesOnly();
     if ($excludeDirs) {
         $iterator->ignoreDirs($excludeDirs, false);
     }
     foreach ($iterator as $path => $file) {
         $subpath = str_replace($dir, $basename, $path);
         $subpath = str_replace('\\', '/', $subpath);
         $files[$subpath] = $path;
     }
     if (class_exists('ZipArchive')) {
         $zip = new ZipArchive();
         $zip->open($archive, ZipArchive::CREATE);
         foreach ($files as $path => $realpath) {
             $zip->addFile($realpath, $path);
         }
         $zip->close();
     } else {
         $phar = new PharData($archive, 0, null, Phar::ZIP);
         $phar->buildFromIterator(new ArrayIterator($files));
         $phar->compressFiles(Phar::GZ);
         foreach ($files as $path => $realpath) {
             if (filesize($realpath) == 0) {
                 $phar[$path]->decompress();
             }
         }
     }
 }
开发者ID:redaxo,项目名称:redaxo4,代码行数:33,代码来源:archive.php

示例2: zip

 public function zip($from, $to)
 {
     if (!is_dir($from) || !is_readable($from)) {
         throw new Exception('Extension dir doesn\'t not exist or is not a readable directory');
     }
     $outputDir = dirname($to);
     if (!is_dir($outputDir) || !is_writable($outputDir)) {
         throw new Exception('Output dir doesn\'t not exist or is not a writable directory');
     }
     $phar = new PharData($to, null, null, PHAR::ZIP);
     $phar->buildFromDirectory($from);
     $phar->compressFiles(PHAR::GZ);
     unset($phar);
     if (!file_exists($to)) {
         throw new Exception('Can\'t create zip file');
     }
     if (PHP_SAPI == 'cli') {
         echo "Zip file is created\n";
     }
 }
开发者ID:quan-vu,项目名称:crxbuild,代码行数:20,代码来源:CrxBuild.php

示例3: fn_compress_files

/**
 * Compress files with Tar archiver
 *
 * @param string $archive_name - archive name (zip, tgz, gz and tar.gz supported)
 * @param string $file_list - list of files to place into archive
 * @param string $dirname - directory, where the files should be get from
 * @return bool true
 */
function fn_compress_files($archive_name, $file_list, $dirname = '')
{
    if (!class_exists('PharData')) {
        fn_set_notification('E', __('error'), __('error_class_phar_data_not_found'));
        return false;
    }
    if (empty($dirname)) {
        $dirname = Registry::get('config.dir.files');
    }
    if (!is_array($file_list)) {
        $file_list = array($file_list);
    }
    $ext = fn_get_file_ext($archive_name);
    $_exts = explode('.', $archive_name);
    array_shift($_exts);
    $first_dot_ext = '.' . implode('.', $_exts);
    // https://bugs.php.net/bug.php?id=58852. Phar gets ext from the first dot: 'test.1.2.3.tgz' -> ext = 1.2.3.tgz
    $arch = fn_normalize_path($dirname . '/' . $archive_name);
    fn_rm($arch);
    if ($ext != 'zip') {
        $arch = fn_normalize_path($dirname . '/' . $archive_name . '.tmp');
        fn_rm($arch);
    }
    if ($ext == 'gz' && strpos($archive_name, '.tar.gz') !== false) {
        $ext = 'tar.gz';
    }
    try {
        $phar = new PharData($arch);
        foreach ($file_list as $file) {
            $path = fn_normalize_path($dirname . '/' . $file);
            if (is_file($path)) {
                $phar->addFile($path, basename($path));
            } elseif (is_dir($path)) {
                $phar->buildFromDirectory($path);
            }
        }
        if ($ext == 'zip') {
            $phar->compressFiles(Phar::GZ);
        } else {
            $phar->compress(Phar::GZ, $first_dot_ext);
            // We need to unset Phar because the PharData class still has the file "open".
            // Windows servers cannot delete the files with the "open" handlers.
            unset($phar);
            fn_rm($arch);
        }
    } catch (Exception $e) {
        fn_set_notification('E', __('error'), $e->getMessage());
        return false;
    }
    return true;
}
开发者ID:heg-arc-ne,项目名称:cscart,代码行数:59,代码来源:fn.fs.php

示例4: main

 /**
  * @throws BuildException
  */
 public function main()
 {
     $this->checkPreconditions();
     try {
         $this->log('Building archive: ' . $this->destinationFile->__toString(), Project::MSG_INFO);
         /**
          * Delete old archive, if exists.
          */
         if ($this->destinationFile->exists()) {
             $isDeleted = $this->destinationFile->delete();
             if (!$isDeleted) {
                 $this->log("Could not delete destination file {$this->destinationFile}", Project::MSG_WARN);
             }
         }
         $pharData = new PharData($this->baseDirectory->getPath() . '/' . $this->destinationFile->getName());
         foreach ($this->filesets as $fileset) {
             $this->log('Adding specified files in ' . $fileset->getDir($this->project) . ' to archive', Project::MSG_VERBOSE);
             $pharData->buildFromIterator($fileset->getIterator(), $fileset->getDir($this->project));
         }
         if ($this->compression !== PHAR::NONE && $pharData->canCompress($this->compression)) {
             try {
                 $pharData->compress($this->compression);
             } catch (UnexpectedValueException $uve) {
                 $pharData->compressFiles($this->compression);
             }
             unset($pharData);
         }
     } catch (Exception $e) {
         throw new BuildException('Problem creating archive: ' . $e->getMessage(), $e, $this->getLocation());
     }
 }
开发者ID:TheTypoMaster,项目名称:SPHERE-Framework,代码行数:34,代码来源:PharDataTask.php

示例5: close

 /**
  * @inheritDoc
  */
 public function close()
 {
     $this->phar->compressFiles(\Phar::GZ);
     $this->phar = null;
 }
开发者ID:ambient-lounge,项目名称:site,代码行数:8,代码来源:PharArchiveCreator.php


注:本文中的PharData::compressFiles方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。