zoukankan      html  css  js  c++  java
  • php 打包tar.gz

        /**
         * author liuxiaodong
         * date 2019/3/6 09:48
         * @param $data array  imgs
         * @param $name
         * @return array
         * @throws Exception
         */
        public function createTarGz( $data, $name )
        {
            $tmp    = SITE_PATH . '/uploads/tar/' . date( 'dmy' ) . '/';
            if( !is_dir( $tmp ) )
                if( !mkdir( $tmp, 0777, true ) )
                    throw new Exception( '创建目录失败,请检查' );
    
            $tmpTar     = $tmp . $name . '.tar';
            $retfile    = $tmp . $name . '.tar.gz';
            @unlink( $retfile );
    
            try{
                $phar   = new PharData( $tmpTar );
                $phar->addEmptyDir( 'ad' );//业务要求建个ad目录;可以忽略该步
                foreach( $data as $k=> $path ) {
                    $path   = realpath( $path );
                    $ext    = substr( $path, strpos( $path, '.' ) );
                    $phar->addFile( $path, 'ad/' . $k . $ext );//ad 可以忽略
                }
                $phar->compress( Phar::GZ );
            }catch ( Exception $e ) {
                throw new Exception( '压缩包生成失败:' . $e->getMessage() );
            }
    
            if( !file_exists( $retfile ) )
                throw new Exception( '压缩包生成失败' );
            unlink( $tmpTar );
    
            $url        = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . dirname( $_SERVER['SCRIPT_NAME'] );
            return [
                'path'  => str_replace( SITE_PATH, '.', $retfile ),
                'md5'   => md5_file( $retfile ),
                'url'   => str_replace( SITE_PATH, $url, $retfile ),
            ];
        }
  • 相关阅读:
    Java中Vector和ArrayList的区别
    Java深拷贝与浅拷贝
    Java基础数据类型转换
    Java中的break Label 和continue Label
    java中关于Integer 和java 中方法参数传递
    网络虚拟化
    备份工具
    mysql文件理解
    mysql分区介绍
    进程间通信
  • 原文地址:https://www.cnblogs.com/lxdd/p/10481836.html
Copyright © 2011-2022 走看看