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 相关文章推荐
PHP.MVC的模板标签系统(一)
Sep 05 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
php实现在服务器上创建目录的方法
Mar 16 PHP
php实现的一段简单概率相关代码
May 30 PHP
php处理复杂xml数据示例
Jul 11 PHP
php实现用户登陆简单实例
Apr 04 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHP架构及原理知识点详解
Dec 22 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
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
光电信息专业应届生求职信
2013/10/07 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
《掌声》教学反思
2014/02/23 职场文书
岗位聘任书范文
2014/03/29 职场文书
销售求职信范文
2014/05/26 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
求职简历自我评价2015
2015/03/10 职场文书
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL