时间:2021-07-01 10:21:17 帮助过:3人阅读
在一次需求中,需要一个FTP服务器作为中转站,程序定时在FTP服务器获取数据,定时上传数据库的数据到FTP服务器上,由于PHP没有安装ftp扩展,导致FTP操作很是麻烦,对于socket的理解不够深入,由于时间比较紧急,在同事指点下,想到了用curl方法,经过自己的整理,将curl方法整理为一个类:
?
输出 curl_setopt($ch, CURLOPT_INFILE, $fp); //要上传的文件 $http_result = curl_exec($ch); //执行 $error = curl_error($ch); curl_close($ch); fclose($fp); //成功上传文件 返回true if (!$error) { return true; } } /* * curl 方法将读取FTP文件并保存在本地使用 * $filenameFTP服务器文件名,$filepath 保存到本地(服务器)的目录 */ public static function ftp_read($filename,$filepath) { $curl = curl_init(); $target_ftp_file = "ftp://".self::$host.":".self::$port."/".self::$readdir."/".$filename;//完整路径 curl_setopt($curl, CURLOPT_URL,$target_ftp_file); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_VERBOSE, 1); curl_setopt($curl, CURLOPT_FTP_USE_EPSV, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 300); // times out after 300s curl_setopt($curl, CURLOPT_USERPWD,self::$usrname.':'.self::$pwd);//FTP用户名:密码 // Sets up the output file //本地保存目录 if(is_dir($filepath)){ $outfile = fopen($filepath.$filename, 'w');//保存到本地的文件名 curl_setopt($curl,CURLOPT_FILE,$outfile); // Executes the cURL $info = curl_exec($curl); fclose($outfile); $error_no = curl_errno($curl); curl_close($curl); //成功读取文件,返回 true if($info){ return true; } } } } ?>
?这里只是做了上传与下载文件,删除文件的操作没有涉及,有兴趣的童鞋可以研究下