PHP中FTP相关函数小结


Posted in PHP onJuly 15, 2016

本文实例讲述了PHP中FTP相关函数。分享给大家供大家参考,具体如下:

<?php
set_time_limit(0);
//转存本地地址
define(
  'STORE_PATH',
  dirname(__FILE__) . '/../../../../temp_data/test/'
);
define('LIST_PATH', STORE_PATH . 'list/');
define('CHAPTER_PATH', LIST_PATH . 'chapter/');
define('DETAIL_PATH', LIST_PATH . 'detail/');
createFolder(STORE_PATH);
createFolder(LIST_PATH);
createFolder(CHAPTER_PATH);
createFolder(DETAIL_PATH);
$ftp_server = "ip";
$ftp_user = "anonymous";
$ftp_pass = "anonymous";
$conn_id = ftp_connect ( $ftp_server ) or die ( "Couldn't connect to $ftp_server" );
if (@ftp_login ( $conn_id, $ftp_user, $ftp_pass )) {
echo "Connected as $ftp_user@$ftp_server\n";
} else {
echo "Couldn't connect as $ftp_user\n";
}
ftp_pasv($conn_id, true);
/**
 * 创建文件并写入内容
 *
 * @param string $path   path/
 * @param string $fileName filename
 * @param string $data   content
 *
 * @return string 返回路径
 */
function createFile ($path, $fileName, $data)
{
  if (empty($data)) {
    return false;
  }
  file_put_contents($path . $fileName, $data);
  return $path . $fileName;
}
/**
 * 创建目录
 *
 * @param string $path path
 *
 * @return no
 */
function createFolder ($path)
{
  if (! file_exists($path)) {
    createFolder(dirname($path));
    if (mkdir($path, 0777)) {
      echo "\n dir not find ,make dir " . dirname($path) . " is ok!";
    } else {
      echo "\n dir not find ,make dir " . dirname($path) . " is fail!";
    }
  }
}
/**
 * 抓取电子书籍的类别
 *
 * @param string $xmlUrl    xml地址
 * @param string $saveFileName 文件名称
 *
 * @return string 返回路径
 */
function getClassXml ($conn_id,$categoryDir, $saveFileName = 'category.xml')
{
  //获取顶级栏目
$clist = getDirListFormFtp($conn_id, $categoryDir);
$itemTPL = '<Item><ID>%s</ID><Name>%s</Name></Item>';
$items='';
foreach ($clist as $key=>$value){
$items .=sprintf($itemTPL,$value['name'],$value['detail']);
}
$bodyTPL='<Tofo><Class>%s</Class></Tofo>';
$data = sprintf($bodyTPL,$items);
  echo "\n".createFile(STORE_PATH, $saveFileName, $data);
}
set_time_limit(0);
$start_time = time();
$bookCache=array();
$categoryDir = "\\tingshu\\web";
getClassXml($conn_id,$categoryDir);
//获取顶级栏目
$clist = getDirListFormFtp($conn_id, $categoryDir);
//获取二级栏目分类
foreach ($clist as $key=>$value){
$_secondCateoryDir = $categoryDir.'\\'.$value['name'];
$_secondCateorylist = getDirListFormFtp($conn_id, $_secondCateoryDir);
$listData='';
$listTPL='<Tofo><Class><ID>%s</ID><Name>%s</Name><Books>%s</Books></Class></Tofo>';
$items ='<Item><ID>%s</ID><Name>%s</Name></Item>';
$listItemString='';
//获取详细书籍章节列表
foreach ($_secondCateorylist as $key=>$book){
$listItemString.=sprintf($items,$book['name'], $book['detail']);
$_bookListDir = $_secondCateoryDir.'\\'.$book['name'];
$chapters = getBook($conn_id,$_bookListDir);
//生产book章节html
getBookofChapter ($book,$chapters);
//缓存bookid和章节信息
$bookCache[$book['name']] = array('category'=>$value['name'],'chapters'=>$chapters);
}
//生成二级栏目列表页
$listData = sprintf($listTPL, $value['name'], $value['detail'],$listItemString);
$list_save_path = $value['name'] . '.xml';
  echo "\n".createFile(LIST_PATH, $list_save_path, $listData);
}
$arrString = "<?php \n \$bookCache=".var_export($bookCache, true).";\n?>";
echo "\n建立缓存文件:".createFile(STORE_PATH, 'bookcache.php', $arrString);
/**
 * 抓取书籍章节信息
 *
 * @param array $bookIds 书籍章节信息
 *
 * @return boolean 返回是否抓取成功
 */
function getBookofChapter ($bookinfo,$chapters)
{
  if (! is_array($chapters)) {
    return false;
  }
  $bookData = '';
$bookTPL = '<Tofo><Books><ID>%s</ID><Name>%s</Name><Volumes>%s</Volumes></Books></Tofo>';
  $bookItemTPL='<Item><ID>%s</ID><Name>%s</Name></Item>';
  //<Play>%s</Play>
//<Download>%s</Download>
//,$item['downurl'],$item['downurl']
  $chapterString='';
foreach ($chapters as $key=>$item){
  $chapterString.=sprintf($bookItemTPL,$item['name'],$item['detail']);
  }
  //生成二级栏目列表页
$bookData = sprintf($bookTPL, $bookinfo['name'], $bookinfo['detail'],$chapterString);
 $book_chapter_save_path = $bookinfo['name'] . '.xml';
  if (! empty($bookData)) {
    echo "\n".createFile(CHAPTER_PATH, $book_chapter_save_path, $bookData);
  }
  return true;
}
function getBook($conn_id,$_bookListDir){
$chapter=array();
$buff = ftp_nlist ( $conn_id, $_bookListDir );
if(is_array($buff)){
$resourceArray = array();
foreach ($buff as $key=>$value){
if(strstr( $value, '.txt' )){
}else{
$resourcesName = str_replace($_bookListDir.'\\', "", $value);
$temp = preg_split ( '/\./',$resourcesName);
$resourceArray[trim($temp[0])]=$resourcesName;
}
}
foreach ($buff as $key=>$value){
if(strstr( $value, '.txt' )){
$name = trim(str_replace(".txt","",str_replace($_bookListDir.'\\', "", $value)));
$chapter[$name] = array (
'name' => $name,
'detail' => getFileContentsFormFtp ( $conn_id, $value ),
'downurl' =>$resourceArray[$name]
);
}
}
}
ksort($chapter , SORT_NUMERIC);
echo "\n";
var_dump('chapter index :'.implode(array_keys ($chapter), ','));
echo "\n";
return $chapter;
}
function getDirListFormFtp($conn_id, $categoryDir) {
$categoryArray = array ();
$dirs = getDirNameFormFtp ( $conn_id, $categoryDir );
//获取分类描述
foreach ( $dirs as $key => $value ) {
$path = $categoryDir . '\\' . $value . '.txt';
$categoryArray [] = array ('name' => $value, 'detail' => getFileContentsFormFtp ( $conn_id, $path ) );
}
return $categoryArray;
}
function getFileContentsFormFtp($conn_id, $server_file) {
$_tempFileName = STORE_PATH.'temp.tmp';
$content = '';
try {
if (ftp_get ( $conn_id, $_tempFileName, $server_file, FTP_ASCII )) {
$content = file_get_contents ( $_tempFileName );
}
} catch (Exception $e) {
var_dump('error timeout:-----');
global $ftp_server;
$conn_id = ftp_connect ( $ftp_server );
if (@ftp_login ( $conn_id, $ftp_user, $ftp_pass )) {
echo "Connected as $ftp_user@$ftp_server\n";
} else {
echo "Couldn't connect as $ftp_user\n";
}
ftp_pasv($conn_id, true);
if (ftp_get ( $conn_id, $_tempFileName, $server_file, FTP_ASCII )) {
$content = file_get_contents ( $_tempFileName );
}
}
$content = iconv ( "GBK", "UTF-8//IGNORE", trim($content) );
echo "\n";
var_dump('file name :'.$server_file.';content:'.$content);
return $content;
}
function getDirNameFormFtp($conn_id, $dirString) {
$buff = ftp_rawlist ( $conn_id, $dirString );
$dirs = array_filter ( $buff, "dirfilter" );
foreach ( $dirs as $key => $value ) {
$temp = preg_split ( '/<DIR>/', $value );
$dirs [$key] = trim ( $temp [1] );
}
asort($dirs , SORT_NUMERIC);
return $dirs;
}
function dirfilter($var) {
return (strstr ( $var, '<DIR>' ));
}
ftp_close ( $conn_id );

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
如何在PHP中使用Oracle数据库(1)
Oct 09 PHP
如何做到多笔资料的同步
Oct 09 PHP
PHP脚本数据库功能详解(中)
Oct 09 PHP
PHP 函数语法介绍一
Jun 14 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
php中如何防止表单的重复提交
Aug 02 PHP
php实现cookie加密的方法
Mar 10 PHP
php中JSON的使用方法
Apr 30 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 PHP
PHP如何获取Cookie并实现模拟登录
Jul 16 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 #PHP
Yii控制器中filter过滤器用法分析
Jul 15 #PHP
Yii编程开发常见调用技巧集锦
Jul 15 #PHP
如何正确配置Nginx + PHP
Jul 15 #PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 #PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 #PHP
session 加入redis的实现代码
Jul 15 #PHP
You might like
有关PHP中MVC的开发经验分享
2012/05/17 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
学习vue.js计算属性
2016/12/03 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
vue中关闭eslint的方法分析
2018/08/04 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
详解如何减少python内存的消耗
2019/08/09 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
Python LMDB库的使用示例
2021/02/14 Python
员工自我鉴定
2013/10/09 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
创先争优演讲稿
2014/09/15 职场文书
女生抽烟检讨书
2014/10/05 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
导游词300字
2015/02/13 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript