php使用curl实现ftp文件下载功能


Posted in PHP onMay 16, 2017

本文实例为大家分享了php实现ftp文件下载功能,供大家参考,具体内容如下

不知道为什么用正常的ftp_get函数下载文件速度特别慢,但是用ftp的客户端下载很快,所以换了curl的下载方式,速度正常

function file_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){
  $curlobj = curl_init();//初始化
  //传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg'
  curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path);
  curl_setopt($curlobj,CURLOPT_HEADER,0);//不输出header
  curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0);
  //time out after 300s 
  curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超时时间
  //通过这个函数设置ftp的用户名和密码,没设置就不需要! 
  curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);

  $outfile = fopen($fileSavePath,'w+'); //保存到本地文件的文件名 
  curl_setopt($curlobj,CURLOPT_FILE,$outfile);

  $rtn = curl_exec($curlobj);
  if(curl_errno($curlobj)){
    writeLog('Curl error: ' . curl_error($curlobj));
  }
  fclose($outfile);
  curl_close($curlobj);
   if($rtn == 1){
    return true;
   }else{
    unlink($fileSavePath);//如果下载失败,但是本地open了这个文件,所以要删除
    return false;
   }

}

测试下载小文件是正常的,但是如果网速很慢,下载大文件时候,会报一个ftp timeout的错误,目前还在不知道是哪里配置问题,还是什么问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP脚本数据库功能详解(中)
Oct 09 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
PHP防止注入攻击实例分析
Nov 03 PHP
php中动态变量用法实例
Jun 10 PHP
PHP区块查询实现方法分析
May 12 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
php实现在线考试系统【附源码】
Sep 18 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 #PHP
php使用curl实现简单模拟提交表单功能
May 15 #PHP
PHP读取Excel类文件
May 15 #PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 #PHP
PHP从数组中删除元素的四种方法实例
May 12 #PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 #PHP
php中时间函数date及常用的时间计算
May 12 #PHP
You might like
PHP 中执行系统外部命令
2006/10/09 PHP
我用php+mysql写的留言本
2006/10/09 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Python使用进程Process模块管理资源
2020/03/05 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
售后服务承诺书范文
2014/03/26 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
好听的队名和口号
2014/06/09 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL