PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要为大家详细介绍了 php 使用 curl 实现 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 的错误,目前还在不知道是哪里配置问题,还是什么问题。
来源: http://www.phperz.com/article/17/0808/339849.html