成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP的CURL功能擴(kuò)展基本用法

nicercode / 762人閱讀

摘要:的功能提供了很多函數(shù),需要將這些函數(shù)按特定的步驟組合到一起,我們先來了解下建立請(qǐng)求的基本步驟。代碼如下我們可以通設(shè)置函數(shù)的不同參數(shù),可以獲得不同的結(jié)果,這也是擴(kuò)展的強(qiáng)大之處。函數(shù)的常用參數(shù)選項(xiàng)具體可查閱官方文檔,此處就不列舉。

PHP的curl功能提供了很多函數(shù),需要將這些函數(shù)按特定的步驟組合到一起,我們先來了解下PHP建立curl請(qǐng)求的基本步驟。

$ch = curl_init(); // 創(chuàng)建一個(gè)新的CURL資源賦給變量$ch

curl_setopt($ch, CURLOPT_URL, $url); // 設(shè)置URL

$response = curl_exec($ch); // 執(zhí)行,獲取URL并輸出到瀏覽器

curl_close($ch); // 釋放資源

如果我們希望獲取內(nèi)容但不輸出,可以使用 CURLOPT_RETURNTRANSFER 參數(shù),并設(shè)置其值為非0或者true值。代碼如下:curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

我們可以通設(shè)置函數(shù)curl_setopt()的不同參數(shù),可以獲得不同的結(jié)果,這也是CURL擴(kuò)展的強(qiáng)大之處。curl_setopt()函數(shù)的常用參數(shù)選項(xiàng)具體可查閱官方文檔,此處就不列舉。

下面是我常用的curl get和post請(qǐng)求的方法:

get請(qǐng)求:

public function httpGet(string $url = "")
    {
        // 記錄請(qǐng)求信息的日志
        // todo
        
        try {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            //https 請(qǐng)求
            if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            }
            $response = curl_exec($ch);
            $errorCode = curl_errno($ch);
            curl_close($ch);
            if (!empty($errorCode)) {
                // 可記錄錯(cuò)誤碼日志
                return null;
            }
            // 記錄返回結(jié)果日志
            return $response;
        } catch (Exception $e) {
            $errorLog = [
                "msg" => $e->getMessage(),
                "trace" => $e->getTraceAsString(),
                "data" => [
                    "url" => $url,
                ]
            ];
            // 記錄錯(cuò)誤日志
            return null;
        }
    }

POST請(qǐng)求:

public function httpPost(string $url = "", array $data = [])
    {
        // 記錄請(qǐng)求信息的日志
        // todo
        
        try {
            $jsonData = json_encode($data);
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData);
            curl_setopt($curl, CURLOPT_HEADER, 0);
            curl_setopt($curl, CURLOPT_TIMEOUT, 60);
            curl_setopt($curl, CURLOPT_HTTPHEADER, [
                "Content-Type: application/json; charset=utf-8",
                "Content-Length:" . strlen($jsonData)
            ]);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            //https 請(qǐng)求
            if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            }
            $result = curl_exec($curl);
            $errorCode = curl_errno($curl);
            curl_close($curl);
            if (!empty($errorCode)) {
                // 可記錄錯(cuò)誤碼日志
                return null;
            }
            // 記錄返回結(jié)果日志
            return json_decode($result, true);
        } catch (Exception $e) {
            $errorData = [
                "msg" => $e->getMessage(),
                "trace" => $e->getTraceAsString(),
                "data" => [
                    "url" => $url,
                    "postData" => $data
                ]
            ];
            // 記錄錯(cuò)誤日志
            return null;
        }
    }

歡迎各位朋友進(jìn)行交流。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29899.html

相關(guān)文章

  • SOA面向服務(wù)基礎(chǔ)

    摘要:面向服務(wù)面向服務(wù)的基礎(chǔ)面向服務(wù)的三層應(yīng)用層,服務(wù)層,數(shù)據(jù)層應(yīng)用層用于給用戶展示,,,,安卓。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。編譯完成,提示我們已經(jīng)在下了。 面向服務(wù) 面向服務(wù)的基礎(chǔ) 面向服務(wù)的三層:應(yīng)用層,服務(wù)層,數(shù)據(jù)層 * 應(yīng)用層:用于給用戶展示,PC,H5,IOS,安卓。 * 服務(wù)層:業(yè)務(wù)邏輯,提供接口(商品,訂單,支付,用戶,物流)。 * 數(shù)據(jù)層:提供數(shù)據(jù)支持(...

    songze 評(píng)論0 收藏0
  • php擴(kuò)展cURL執(zhí)行中途無響應(yīng)

    摘要:今天跑腳本遇到一個(gè)奇怪的問題,就是請(qǐng)求到后期會(huì)出現(xiàn)程序阻塞卡死,無異常無響應(yīng),一直掛起,腳本也不會(huì)自動(dòng)結(jié)束。設(shè)置允許執(zhí)行的最長(zhǎng)秒數(shù)。增加執(zhí)行超時(shí)后的請(qǐng)求設(shè)置函數(shù)。從錯(cuò)誤類型中,看到確實(shí)是有一些請(qǐng)求在秒內(nèi)未能執(zhí)行完畢。 今天跑腳本遇到一個(gè)奇怪的問題,就是cURL請(qǐng)求到后期會(huì)出現(xiàn)程序阻塞卡死,無異常無響應(yīng),一直掛起,腳本也不會(huì)自動(dòng)結(jié)束。跟對(duì)方溝通后說,哥們兒,是不是你們的程序有問題啊,這邊...

    hufeng 評(píng)論0 收藏0
  • QueryList 4.0 簡(jiǎn)潔、優(yōu)雅、可擴(kuò)展PHP采集工具(爬蟲)

    QueryList 簡(jiǎn)介 QueryList是一套簡(jiǎn)潔、優(yōu)雅、可擴(kuò)展的PHP采集工具(爬蟲),基于phpQuery。 特性 擁有與jQuery完全相同的CSS3 DOM選擇器 擁有與jQuery完全相同的DOM操作API 擁有通用的列表采集方案 擁有強(qiáng)大的HTTP請(qǐng)求套件,輕松實(shí)現(xiàn)如:模擬登陸、偽造瀏覽器、HTTP代理等意復(fù)雜的網(wǎng)絡(luò)請(qǐng)求 擁有亂碼解決方案 擁有強(qiáng)大的內(nèi)容過濾功能,可使用jQue...

    Astrian 評(píng)論0 收藏0
  • PHP Q&A

    摘要:有哪些作用域函數(shù)作用域類作用域函數(shù)作用域是什么函數(shù)體是一個(gè)局部作用域函數(shù)體中無法直接訪問外部全局變量,必須通過才能訪問外部全局變量無法訪問通知錯(cuò)誤正確訪問外部全局變量無法訪問函數(shù)體中可以直接訪問常量輸出函數(shù)體中可以直接訪問類靜態(tài)屬性靜態(tài)方法 PHP 有哪些作用域? 函數(shù)作用域 類作用域 PHP 函數(shù)作用域是什么? 函數(shù)體是一個(gè)局部作用域 函數(shù)體中無法直接訪問外部全局變量,必須通...

    mikasa 評(píng)論0 收藏0
  • PHP7.0.0在OS X編譯安裝

    摘要:目前支持和協(xié)議。除此以外,還能在可能的字符編碼之間相互進(jìn)行編碼轉(zhuǎn)換。如果啟用了這個(gè)功能,輸入字符編碼可能將自動(dòng)轉(zhuǎn)換成。這些可能在未來增加。 前言 PHP7即將在12月3日正式發(fā)布,而RC8是已經(jīng)差不多穩(wěn)定了的版本,后續(xù)的GA版本主要都是在修復(fù)bug,所以為了未來開發(fā)環(huán)境的升級(jí),準(zhǔn)備嘗試安裝一下。 PHP7.0.0將在12月3日正式發(fā)布,但是12月2日時(shí)github已經(jīng)發(fā)布出PHP-7...

    lordharrd 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<