PHP利用ZipArchive对网站程序所有目录进行整站打包的源代码分享。
- function addFileToZip($path, $zip) {
- $handler = opendir($path); //打开当前文件夹由$path指定。
- /*
- 循环的读取文件夹下的所有文件和文件夹
- 其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,
- 为了不陷于死循环,所以还要让$filename !== false。
- 一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环
- */
- while (($filename = readdir($handler)) !== false) {
- if ($filename != "." && $filename != ".." && $filename != "out_zip" ) {//文件夹文件名字为'.'和‘..’,不要对他们进行操作
- if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归
- addFileToZip($path . "/" . $filename, $zip);
- } else { //将文件加入zip对象
- $zip->addFile($path . "/" . $filename);
- }
- }
- }
- @closedir($path);
- }
- $action='zip';
- if ($action=='zip'){
- ini_set('memory_limit','512M');
- set_time_limit(180);
- $path_name="out_zip/web_www.zip";//创建压缩包的路径,在addFileToZip中要排除这个目录,不压缩本身
- if (file_exists($path_name)){
- unlink($path_name);//删除文件
- fopen($path_name, "w");//创建压缩包(为了清空文件)
- }else{
- fopen($path_name, "w");//创建压缩包
- }
- $zip = new ZipArchive();
- if ($zip->open($path_name, ZipArchive::OVERWRITE) === TRUE) {
- //dirname(__FILE__) 当前绝对路径
- addFileToZip("./", $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
- //$zip->addFile("home.php");//也可以不通过addFileToZip()函数,直接添加文件
- //$zip->addFile("Android/index.php");
- $zip->close(); //关闭处理的zip文件
- echo "压缩包压缩成功";
- }else{
- echo "启动失败";
- }
- }
以上就是PHP利用ZipArchive对网站程序整站打包源代码的详细内容,更多关于PHP利用ZipArchive对网站程序整站打包源代码的资料请关注九品源码其它相关文章!