curl各个参数
$opts = array( //基础参数 CURLOPT_TIMEOUT => 30,//设置请求超时时间 CURLOPT_RETURNTRANSFER => 1,//获取的信息以文件流的形式返回,而不是直接输出 CURLOPT_SSL_VERIFYPEER => false,//禁用后cURL将终止从服务端进行验证 CURLOPT_SSL_VERIFYHOST => false,//检查服务器SSL证书中是否存在一个公用名 CURLOPT_URL => 'http://127.0.0.1/test/index.php',//请求地址 //POST请求 CURLOPT_POST => 1,//发起POST方式请求 CURLOPT_POSTFIELDS => array( 'user'=>'jeff', 'file'=>'@D:/image/my_test.jpg',//传输文件 ),//POST发送的数据 //获取头信息 CURLOPT_HEADER => 1,//获取头信息(与POST方式不能同时使用) CURLOPT_NOBODY => 1,//不获取主体内容 //伪造头信息 CURLOPT_HTTPHEADER=> $header,//设置头信息,数组方式 CURLOPT_REFERER => 'https://www.baidu.com',//伪造来源地址 //获取cookie CURLOPT_COOKIEJAR => $cookie_file,//为cookie数据 //使用cookie CURLOPT_COOKIEFILE => $cookie_file,//使用cookie数据 //跟随跳转 CURLOPT_FOLLOWLOCATION => true,//面的跳转会继续跟踪访问,而且cookie在header里面被保留了下来 //使用CURLOPT_MAXREDIRS可以限定递归返回的数量 //代理访问 CURLOPT_PROXY => '39.77.68.212',//代理服务器IP CURLOPT_PROXYPORT => '8080',//代理服务器端口 //CURLOPT_PROXYUSERPWD 指定需要验证的代理的账号密码,"[username]:[password]"格式的字符串 //综合 curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩,若返回数据为乱码可尝试 );
初始并运行
$ch = curl_init(); curl_setopt_array($ch, $opts); $data = curl_exec($ch); $info = curl_getinfo($ch);//获取传输状态信息数组 $error = curl_error($ch);//获取错误信息 curl_close($ch); if($error) throw new Exception('CURL请求错误:' . $error);
curl_getinfo($ch)获取的数组信息
"url" //资源网络地址 "content_type" //内容编码 "http_code" //HTTP状态码 "header_size" //header的大小 "request_size" //请求的大小 "filetime" //文件创建时间 "ssl_verify_result" //SSL验证结果 "redirect_count" //跳转技术 "total_time" //总耗时 "namelookup_time" //DNS查询耗时 "connect_time" //等待连接耗时 "pretransfer_time" //传输前准备耗时 "size_upload" //上传数据的大小 "size_download" //下载数据的大小 "speed_download" //下载速度 "speed_upload" //上传速度 "download_content_length"//下载内容的长度 "upload_content_length" //上传内容的长度 "starttransfer_time" //开始传输的时间 "redirect_time"//重定向耗时
CURLOPT_CONNECTTIMEOUT
CURLOPT_TIMEOUT
使用cURL下载MP3文件是一个对开发人员来说不错的例子。CURLOPT_CONNECTTIMEOUT
可以设置为10秒,标识如果服务器10秒内没有响应,脚本就会断开连接;CURLOPT_TIMEOUT可以设置为100,如果MP3文件100秒内没有下载完成,脚本将会断开连接。