1 ** 2 * @desc curl get请求 3 * @date 2016-11-23 11:46:13 4 * 5 * @param $url 请求的url 6 * @param 请求的头部数据|string $header 7 * @param 请求的cookie数据|string $cookie 8 * @param 请求数据错误是否返回获取的数据|bool $source 9 * 10 * @return bool|mixed 11 * 12 */ 13 function curlGet($url, $header = "", $cookie = '', $source = TRUE) 14 { 15 $ch = curl_init($url); 16 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 17 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 18 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 19 curl_setopt($ch, CURLOPT_HEADER, $header); // 设置请求头部header数据 20 if ($cookie) { 21 curl_setopt($ch, CURLOPT_COOKIE, $cookie); // 设置cookie 22 } 23 curl_setopt_array($ch, array( 24 CURLOPT_TIMEOUT => 30, //设置cURL允许执行的最长秒数 30s 25 CURLOPT_CONNECTTIMEOUT => 10, // 在发起连接前等待的时间,如果设置为0,则无限等待。 26 )); 27 28 //抓取URL并把它传递给浏览器 29 $result = curl_exec($ch); 30 //var_dump($result); 31 // 为false 说明curl错误 32 if($result === false) { 33 $result = 'ERROR(CURL): ['.curl_errno($ch) . ']' . curl_error($ch); 34 } 35 36 //获取执行后的 http 状态码 37 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 38 if ($httpCode != 200 && !$source) { // 非200说明异常 39 $result = FALSE; 40 } 41 42 // 获取执行后的 http 头部Header 43 if (isset($_GET['debug'])) { 44 $httpInfo = curl_getinfo($ch); 45 echo '<pre>' . print_r($httpInfo, true) . '</pre>' . PHP_EOL; 46 } 47 curl_close($ch); // 关闭cURL资源,并且释放系统资源 48 49 50 51 return $result; 52 }