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 }