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调用mysql数据 dbclass类
May 07 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
php的ddos攻击解决方法
Jan 08 PHP
PHP定时执行任务实现方法详解(Timer)
Jul 30 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
laravel 多图上传及图片的存储例子
Oct 14 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 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里的中文变量说明
2011/07/23 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
Python实现单词拼写检查
2015/04/25 Python
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
Python实现的矩阵类实例
2017/08/22 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
tornado 多进程模式解析
2018/01/15 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
人力资源总监工作说明
2014/03/03 职场文书
初一学生评语大全
2014/04/24 职场文书
应届生自荐信
2014/06/30 职场文书
2015年工会工作总结
2015/03/30 职场文书