清華大佬耗費三個月吐血整理的幾百G的資源,免費分享!....>>>
<?php /** * Class Curl curl簡單封裝 get post */ class Curl { /** * @brief get請求 * @param $url 請求的url * @param array $param 請求的參數 * @param array $header 頭部數據 * @param int $timeout 超時時間 * @param int $followAction 是否允許被抓取的鏈接跳轉 * @param int $gzip 是否啟用gzip壓縮 * @param string $format 格式 * @param int $log 是否啟用日志 * @return mixed */ public static function get($url, $param = array(), $header = array(), $timeout = 3, $followAction = 0, $gzip = 0, $format = 'html',$log=0) { $ch = curl_init(); if (is_array($param)) { $url = $url . '?' . http_build_query($param); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"); if ($followAction) { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //允許被抓取的鏈接跳轉 } if ($gzip) { curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip, deflate')); curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); } //curl_setopt($ch, CURLOPT_REFERER, ''); $data = curl_exec($ch); if ($format == 'json') { $data = json_decode($data, true); } if($log){ if($format=='html'){ self::_logCurlInfo($ch,$param,''); }else{ self::_logCurlInfo($ch,$param,$data); } } curl_close($ch); return $data; } /** * @brief post請求 * @param $url 請求的url地址 * @param array $param 請求的參數 * @param array $header http頭 * @param int $ssl 是否啟用ssl * @param string $format 返回的格式 * @param int $log 是否啟用日志 * @return mixed */ public static function post($url, $param = array(), $header = array(), $ssl = 0, $format = 'json',$log=0) { $ch = curl_init(); if (is_array($param)) { $urlparam = http_build_query($param); } else if (is_string($param)) { //json字符串 $urlparam = $param; } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 120); //設置超時時間 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回原生的(Raw)輸出 curl_setopt($ch, CURLOPT_POST, 1); //POST curl_setopt($ch, CURLOPT_POSTFIELDS, $urlparam); //post數據 if ($header) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } if ($ssl) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 對認證證書來源的檢查 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); //將curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。 } $data = curl_exec($ch); if ($format == 'json') { $data = json_decode($data, true); } if($log){ if($format=='html'){ self::_logCurlInfo($ch,$param,''); }else{ self::_logCurlInfo($ch,$param,$data); } } curl_close($ch); return $data; } /** * 請求信息記錄日志 * @param $ch curl句柄 * @param $request 請求參數 * @param $response 響應結果 */ private static function _logCurlInfo($ch,$request,$response) { $info = curl_getinfo($ch); $resultFormat = "耗時:[%s] 返回狀態:[%s] 請求的url[%s] 請求參數:[%s] 響應結果:[%s] 大小:[%s]kb 速度:[%s]kb/s"; $resultLogMsg = sprintf($resultFormat,$info['total_time'],$info['http_code'],$info['url'],var_export($request,true),var_export($response,true),$info['size_download']/1024,$info['speed_download']/1024); error_log($resultLogMsg.PHP_EOL,3,self::CURL_LOG_PATH); } } /* example: echo Curl::get('http://www.baidu.com'); $arr = Curl::post('127.0.0.1/test/test.php',['a'=>1,'b'=>2],'',0); var_dump($arr); */