设为首页 收藏本站
查看: 630|回复: 0

[经验分享] PHP开发笔记系列(七)- 压缩与解压缩

[复制链接]

尚未签到

发表于 2017-4-5 08:47:49 | 显示全部楼层 |阅读模式
      压缩与解压缩,在一般的web应用程序中可能用得不多,但是在下面的一些应用场景中是比较常用的,例如压缩数据库的备份文件,将多个文件打包在一块进行下载,将客户打包上传的文件进行加压然后进行解释,熟悉压缩与解压缩的常用函数和类,还是必要的。
  

      本文《PHP开发笔记系列(七)- 压缩与解压缩》 将是《PHP开发笔记系列(XAMPP+PhpEclipse+XDebug)》 的第七篇,讲述如何使用Pear插件Archive Tar进行常规的文件压缩与解压缩操作。
  

      1. 使用Archive_Tar类进行文件压缩
       Archive_Tar类位于Pear文件夹的Archive/Tar.php文件中,使用该类进行文件压缩所需代码量很少。步骤是:1)实例化该类,第一个构造参数是压缩后的目标文件名,第二个构造参数是压缩类型(gz:使用gzip压缩,bz2使用bzip2压缩),省略第二个参数则表示只打包不压缩;2)创建完Archive_Tar对象后,向该对象的create方法传入文件名数据,即可。代码如下:
     

file:tar.php
url:http://localhost:88/archive/tar.php
<?php
require_once 'Archive/Tar.php';
$tarFile = 'xdebug.tar.gz';
$tar = new Archive_Tar($tarFile, 'gz');
$files = array('xdebug.ini', 'file.html');
$tar->create($files);
echo 'xdebug.tar.gz exist:'.file_exists($tarFile).'<br/>';
echo 'xdebug.tar.gz mtime:'.date('Y-m-d h-i:s', filemtime($tarFile)).'<br/>';
echo 'xdebug.tar.gz :atime:'.date('Y-m-d h-i:s', fileatime($tarFile)).'<br/>';
echo 'xdebug.tar.gz size:'.filesize($tarFile).'<br/>';
?>
     2. 使用Archi ve_Tar类进行文件压缩
      解压缩的过程与压缩过程相似,步骤如下:1)实例化Archive_Tar对象,传入源压缩文件名,2)实例化完对象后,给解压缩的方法extract传入一个目标文件夹名称,压缩包中的文件将被释放到该目标文件夹下。代码如下:

file:extract.php
url:http://localhost:88/archive/extract.php
<?php
require_once 'Archive/Tar.php';
$targetDir = 'xdebug';
$tarFile = 'xdebug.tar.gz';
$tar = new Archive_Tar($tarFile);
$tar->extract($targetDir);
$dp = opendir($targetDir);
while ($entry = readdir($dp)){
if(is_dir($entry))
{
echo '[DIR] '.$entry. '<br/>';
}elseif (is_file($entry))
{
echo '[FILE] '.$entry. '<br/>';
}
}
closedir($dp);
?>
   
  本文地址:http://ryan-d.iteye.com/blog/1543417

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-360327-1-1.html 上篇帖子: PHP $_GET 获取 HTML表单(Form) 或url数据 下篇帖子: Php_PhpStorm_IDE_Yii_customize_让phpstorm支持Yii
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表