远程文件备份,程序员写的,我看不懂,不好意思问。。
时间:2011-09-01
来源:互联网
PHP code
给我的程序附带了一个.bat文件 ,触发做邮件系统备份,程序员说让我自己看,小弟实在看不懂,手里有一个红色的php和mysql开发 圣经第四版的书 ,查询无果,相应的php手册也没有查到什么 公司小,没有师傅,程序员是做后台的,所以也没有理由手把手带我,希望朋友们能帮我讲一下。。
我把程序分三段看 第一段是打开ftp连接 然后是递归读取目录 最后是下载文件
第一段中的fileget我不明白他的意思
第二段读取目录function filecollect($cid,$dir='.') dir后面的单引号中是让我填写要备份的文件以及格式么?
最后一段下载的地方 function recursive_mkdir的方法 不知道是什么作用
ps:小弟自学php大概4个月了,始终没有什么起色,加上在公司也帮忙做做别的,所以也不是很。。
感觉自学很吃力,找猫画虎,但是有的时候找不到猫,不知道如何去画,php100视频正在看,书也再看,感觉还没怎么着呢就遇到瓶颈的说。。。
<?php $remote_addr = '220.xx.xx.xx'; //remote远程 $user_name = 'xxxx'; $user_pwd = 'xxxx'; $dir_prefix = 'F:\\mail\\'. date('Y-m-d'); //prefix前缀 recursive_mkdir($dir_prefix); //recursive递归 $conn_id = ftp_connect($remote_addr) or die("Couldn't connect to server"); //建立ftp新连接 if (@ftp_login($conn_id, $user_name, $user_pwd)) { $filelist = filecollect($conn_id); //collect收集 foreach($filelist as $remote_file) { $local_file = $dir_prefix . substr($remote_file,1); //local_file 本地文件 echo $local_file .'<br>'; fileget($conn_id,$local_file,$remote_file); } } // close the connection ftp_close($conn_id); //递归方式读取目录中的文件 function filecollect($cid,$dir='.') { static $flist=array(); if ($files = ftp_nlist($cid,$dir)) { foreach ($files as $file) { if (ftp_size($cid, $file) == "-1") { filecollect($cid,$file); } else { $flist[] = $file; } } } return $flist; } //创建目录并下载文件 function fileget($cid,$local_file, $server_file) { //目录不存在就创建 if (!file_exists (dirname($local_file))) { if (!@mkdir (dirname($local_file), 0777)) { die($local_file."目录创建失败!"); } } if (ftp_get($cid, $local_file, $server_file, FTP_BINARY)) { echo "传输成功\n"; } else { echo "传输失败\n"; } //chmod($local_file,0666); } function recursive_mkdir( $folder ) { $folder = explode( DIRECTORY_SEPARATOR , $folder ); $mkfolder = ''; for( $i=0 ; isset( $folder[$i] ) ; $i++ ) { $mkfolder .= $folder[$i]; if( !is_dir( $mkfolder ) ) mkdir( "$mkfolder" , 0777); $mkfolder .= DIRECTORY_SEPARATOR; } } ?>
给我的程序附带了一个.bat文件 ,触发做邮件系统备份,程序员说让我自己看,小弟实在看不懂,手里有一个红色的php和mysql开发 圣经第四版的书 ,查询无果,相应的php手册也没有查到什么 公司小,没有师傅,程序员是做后台的,所以也没有理由手把手带我,希望朋友们能帮我讲一下。。
我把程序分三段看 第一段是打开ftp连接 然后是递归读取目录 最后是下载文件
第一段中的fileget我不明白他的意思
第二段读取目录function filecollect($cid,$dir='.') dir后面的单引号中是让我填写要备份的文件以及格式么?
最后一段下载的地方 function recursive_mkdir的方法 不知道是什么作用
ps:小弟自学php大概4个月了,始终没有什么起色,加上在公司也帮忙做做别的,所以也不是很。。
感觉自学很吃力,找猫画虎,但是有的时候找不到猫,不知道如何去画,php100视频正在看,书也再看,感觉还没怎么着呢就遇到瓶颈的说。。。
作者: xiaozhumt 发布时间: 2011-09-01
PHP code
没用过FTP 的函数,不过看代码应该是这样的
用你的流程来说吧
1,首先建立 和 FTP 的通信
2,登录FTP成功 filecollect(通信地址,文件目录位置='默认位置') 例如 wwwroot/test 目录
3,与通信地址成功连接 ftp_nlist 返回wwwroot/test 中 所有 文件 既 文件目录 地址 数组
4,例如 wwwroot/test 中有 1个文件abc.php 1个文件夹 abc.
5,返回 wwwroot/test/abc.php 和 wwwroot/test/abc
6,foreach 循环 wwwroot/test/abc.php 和 wwwroot/test/abc
7,ftp_size 检查 该地址是否 文件。 是则 存入 数组 $flist 中
否则 递归循环 跳转至 第3步 并以 wwwroot/test/abc 为地址 继续循环 直到 所有文件 被找出 并储存 于 数组 $flist 中 终止递 归循环 return 数组 $flist 赋值到 $filelist 中
8,$filelist 循环所有刚刚得到的所有FTP 文件地址
9,fileget() 与通信地址成功连接
并得到 循环中的 单个地址 FTP 文件地址 $remote_file 和 需要存储到的本文件地址 $local_file
10,file_exists 检查是否有这个目录 存在。 否则 创建 并 设置权限为 0777
(在这里需要注意!应把 recursive_mkdir() 放置 if (!@mkdir (dirname($local_file), 0777))
下 并 参数 设置为 dirname($local_file))
11,ftp_get 将 FTP 文件 以二进制方式 下载 到 第10步 创建的文件夹 中去 ftp_get 成功返回 true 失败为 false
recursive_mkdir($dir_prefix); //recursive递归 $conn_id = ftp_connect($remote_addr) or die("Couldn't connect to server"); //建立ftp新连接 if (@ftp_login($conn_id, $user_name, $user_pwd)) { $filelist = filecollect($conn_id); //collect收集 foreach($filelist as $remote_file) { $local_file = $dir_prefix . substr($remote_file,1); //local_file 本地文件 echo $local_file .'<br>'; fileget($conn_id,$local_file,$remote_file); } }
没用过FTP 的函数,不过看代码应该是这样的
用你的流程来说吧
1,首先建立 和 FTP 的通信
2,登录FTP成功 filecollect(通信地址,文件目录位置='默认位置') 例如 wwwroot/test 目录
3,与通信地址成功连接 ftp_nlist 返回wwwroot/test 中 所有 文件 既 文件目录 地址 数组
4,例如 wwwroot/test 中有 1个文件abc.php 1个文件夹 abc.
5,返回 wwwroot/test/abc.php 和 wwwroot/test/abc
6,foreach 循环 wwwroot/test/abc.php 和 wwwroot/test/abc
7,ftp_size 检查 该地址是否 文件。 是则 存入 数组 $flist 中
否则 递归循环 跳转至 第3步 并以 wwwroot/test/abc 为地址 继续循环 直到 所有文件 被找出 并储存 于 数组 $flist 中 终止递 归循环 return 数组 $flist 赋值到 $filelist 中
8,$filelist 循环所有刚刚得到的所有FTP 文件地址
9,fileget() 与通信地址成功连接
并得到 循环中的 单个地址 FTP 文件地址 $remote_file 和 需要存储到的本文件地址 $local_file
10,file_exists 检查是否有这个目录 存在。 否则 创建 并 设置权限为 0777
(在这里需要注意!应把 recursive_mkdir() 放置 if (!@mkdir (dirname($local_file), 0777))
下 并 参数 设置为 dirname($local_file))
11,ftp_get 将 FTP 文件 以二进制方式 下载 到 第10步 创建的文件夹 中去 ftp_get 成功返回 true 失败为 false
作者: Kogeo 发布时间: 2011-09-01
mark and study

作者: hero0524 发布时间: 2011-09-01
他给你的bat文件应该是让你做计划任务 自动执行的.具体的看看bat文件的内容.
作者: PhpNewnew 发布时间: 2011-09-01
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28