PHP调用Linux的命令行执行文件压缩命令


Posted in PHP onJanuary 27, 2013

前几天工作中,需要将3个txt文件,打包成*.zip down到本地……
一开始,我和普通青年一样,想到用PHP内置的 ZipArchive,代码看起来应该是这样的:

/*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt*/ 
$zip=new ZipArchive(); 
$zipfile='./Exl_file/wow.zip'; 
if($zip->open($zipfile,ZIPARCHIVE::CREATE)===TRUE){ 
$zip->addFile('./Exl_file/wow_1.txt','wow_1.txt'); 
$zip->addFile('./Exl_file/wow_2.txt','wow_2.txt'); 
$zip->addFile('./Exl_file/wow_3.txt','wow_3.txt'); 
$zip->close(); 
//下载输出文件后删除相关文件 
}else{ 
echo "ZIP生成失败!"; 
}

可是纠结的是正式环境上没安装zip扩展,ZipArchive直接没法用,代码绝对比在上面装个扩展要来的快——用PHP调用Linux的命令行 ,执行压缩命令,OK,马上行动!
/*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt全部放到 Exl_file 目录下*/ 
$outputs=array(); 
/*用php的exec执行Linux命令 括号里的字符串就是你在Linux命令窗口里敲的命令; 
第二个参数是linux执行该命令后返回的结果数组; 
linux执行返回的每一条结果依次存入该数组 
第三个参数是结果,如果执行成功,则Linux返回结果值为0,如果执行失败,则结果值不为0 
*/ 
exec("zip ./Exl_file/wow.zip ./Exl_file/wow_1.txt ./Exl_file/wow_2.txt ./Exl_file/wow_3.txt",$outputs,$rc); 
if($rc!=0){ 
foreach ($outputs as $ko=>$vo){ 
echo "$vo<br/>"; 
} 
}else{ 
$zipfile='./Exl_file/wow.zip'; 
//文件下载输出后删除相关文件 
} 
}

你可以把if($rc!=0)改成if(1==1)查看Linux执行命令返回的结果行,如下图:
adding: Exl_file/wow_1.txt (deflated 96%) 
adding: Exl_file/wow_2.txt (deflated 97%) 
adding: Exl_file/wow_3.txt (deflated 97%)

可以看到执行返回的信息全部输入到了 $outputs 数组中,*.zip文件生成成功。
PHP 相关文章推荐
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
sql注入与转义的php函数代码
Jun 17 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
利用php生成验证码
Feb 23 PHP
PHP-X系列教程之内置函数的使用示例
Oct 16 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 #PHP
用php来改写404错误页让你的页面更友好
Jan 24 #PHP
php对大文件进行读取操作的实现代码
Jan 23 #PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 #PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 #PHP
php定时删除文件夹下文件(清理缓存文件)
Jan 23 #PHP
PHP关联数组的10个操作技巧
Jan 21 #PHP
You might like
phpwind中的数据库操作类
2007/01/02 PHP
黑夜路人出的几道php笔试题
2009/08/04 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
python进程管理工具supervisor使用实例
2014/09/17 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
django认证系统 Authentication使用详解
2019/07/22 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
什么是会话Bean
2015/05/14 面试题
计算机求职自荐信范文
2014/04/19 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
如何用python反转图片,视频
2021/04/24 Python
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
nginx容器方式反向代理实战
2022/04/18 Servers
服务器nginx权限被拒绝解决案例
2022/09/23 Servers