摘要:使用詳解是一個(gè)非常強(qiáng)大的開(kāi)源庫(kù),支持很多協(xié)議,包括等,我們使用它來(lái)發(fā)送請(qǐng)求。它給我們帶來(lái)的好處是可以通過(guò)靈活的選項(xiàng)設(shè)置不同的協(xié)議參數(shù),并且支持??梢愿鶕?jù)前綴是還是自動(dòng)選擇是否加密發(fā)送內(nèi)容。傳輸前準(zhǔn)備耗時(shí)。上傳內(nèi)容的長(zhǎng)度。
PHP使用CURL詳解
Curl是一個(gè)非常強(qiáng)大的開(kāi)源庫(kù),支持很多協(xié)議,包括HTTP、FTP、TELNET等,我們使用它來(lái)發(fā)送HTTP請(qǐng)求。它給我 們帶來(lái)的好處是可以通過(guò)靈活的選項(xiàng)設(shè)置不同的HTTP協(xié)議參數(shù),并且支持HTTPS。CURL可以根據(jù)URL前綴是“HTTP” 還是“HTTPS”自動(dòng)選擇是否加密發(fā)送內(nèi)容。
使用方法使用CURL的PHP擴(kuò)展完成一個(gè)PHP的請(qǐng)求,一般分為四個(gè)步驟:
初始化Curl連接句柄
設(shè)置屬性選項(xiàng)
執(zhí)行獲取結(jié)果,處理異常
關(guān)閉Curl連接句柄
實(shí)例/*get請(qǐng)求*/ function curlGet($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if (($tmp = curl_exec($ch)) === false) { return false; } curl_close($ch); return $tmp; } /*post請(qǐng)求*/ function curlPost($url, $params) { $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER,FALSE); curl_setopt($ch, CURLOPT_NOBODY, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_POST,TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); if ($ssl){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何證書(shū) curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 檢查證書(shū)中是否設(shè)置域名 } if (($returnData = curl_exec($ch)) === false) { return false; } curl_close($ch); return $returnData; }
說(shuō)明:
通過(guò)curl_init($url);初始化連句柄,也可以通過(guò)選項(xiàng)設(shè)置curl_setopt($ch, CURLOPT_URL, $url);參數(shù)為請(qǐng)求的地址
通過(guò)curl_setopt()設(shè)置連接的選項(xiàng),CURLOPT_RETURNTRANSFER 設(shè)置為1表示稍后執(zhí)行的curl_exec函數(shù)的返回是URL的返回字符串,而不是把返回字符串定向到標(biāo)準(zhǔn)輸出并返回TRUE;其他選項(xiàng)設(shè)置參考http://www.php.net/manual/en/...
($tmp = curl_exec($ch)獲取請(qǐng)求結(jié)果
curl_close($ch)釋放連接
獲取CURL的請(qǐng)求輸出參數(shù)在curl_exec()函數(shù)執(zhí)行之后,可以使用curl_getinfo()函數(shù)獲取CURL請(qǐng)求輸出的相關(guān)信息,示例代碼如下:
curl_exec($ch); $info = curl_getinfo($sh);
curl_getinfo()輸出是一個(gè)數(shù)組,包含以下數(shù)據(jù):
url:網(wǎng)絡(luò)地址。
content_type:內(nèi)容編碼。
http_code:HTTP狀態(tài)碼。
header_size:header的大小。
request_size:請(qǐng)求的大小。
filetime:文件創(chuàng)建的時(shí)間。
ssl_verify_result:SSL驗(yàn)證結(jié)果。
redirect_count:跳轉(zhuǎn)計(jì)數(shù)。
total_time:總耗時(shí)。
namelookup_time:DNS查詢耗時(shí)。
connect_time:等待連接耗時(shí)。
pretransfer_time:傳輸前準(zhǔn)備耗時(shí)。
size_uplpad:上傳數(shù)據(jù)的大小。
size_download:下載數(shù)據(jù)的大小。
speed_download:下載速度。
speed_upload:上傳速度。
download_content_length:下載內(nèi)容的長(zhǎng)度。
upload_content_length:上傳內(nèi)容的長(zhǎng)度。
starttransfer_time:開(kāi)始傳輸?shù)臅r(shí)間表。
redirect_time:重定向耗時(shí)。
curl_getinfo()函數(shù)還有一個(gè)可選擇參數(shù)$opt,通過(guò)這個(gè)參數(shù)可以設(shè)置一些常量,對(duì)應(yīng)到上術(shù)這個(gè)字段,如果設(shè)置了第二個(gè)參數(shù),那么返回的只有指定的信息。例如設(shè)置$opt為CURLINFO_TOTAL_TIME,則curl_getinfo()函數(shù)只返回total_time,即總傳輸消耗的時(shí)間
參考:
http://www.php.net/manual/zh/...
http://www.cnblogs.com/manong...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22383.html
摘要:不支持多進(jìn)程,如果需要異步請(qǐng)求,非阻塞的方式,請(qǐng)選擇。時(shí)會(huì)發(fā)送請(qǐng)求,類(lèi)型為,是表單提交時(shí)最常見(jiàn)的一種。允許函數(shù)執(zhí)行的最長(zhǎng)秒數(shù)。設(shè)定請(qǐng)求中部分的內(nèi)容。常規(guī)的使用來(lái)請(qǐng)求,功能強(qiáng)大,使用方便,按需配置。 在PHP后端的開(kāi)發(fā)過(guò)程中,除了獲取數(shù)據(jù)庫(kù)的數(shù)據(jù)和處理數(shù)據(jù)的內(nèi)部邏輯,往往還需要請(qǐng)求其他服務(wù)器接口的數(shù)據(jù),我們一般有3種方式來(lái)獲取數(shù)據(jù),分別是: file_get_contents fsoc...
摘要:服務(wù)器定時(shí)任務(wù)服務(wù)器定時(shí)任務(wù)需要你是獨(dú)立的服務(wù)器,或者是,總之就是對(duì)系統(tǒng)的配置有足夠的權(quán)限,虛擬空間就不要折騰這個(gè)方法了,因?yàn)槟銢](méi)有權(quán)限。 文章轉(zhuǎn)載自:?jiǎn)栒f(shuō)網(wǎng) ? 詳解PHP設(shè)置定時(shí)任務(wù)的實(shí)現(xiàn)方法地址:http://www.uedsc.com/php-timing-task.html 定時(shí)運(yùn)行任務(wù)對(duì)于一個(gè)網(wǎng)站來(lái)說(shuō),是一個(gè)比較重要的任務(wù),比如定時(shí)發(fā)布文檔,定時(shí)清理垃圾信息等,現(xiàn)在的網(wǎng)站大...
摘要:編譯參數(shù)使用在源代碼目錄中,該命令可以查看所有編譯參數(shù)以及對(duì)應(yīng)的英文解釋編譯參數(shù)說(shuō)明指定安裝目錄整合指定位置指定額外拓展配置歸放處文件夾打開(kāi)安全模式打開(kāi)的支持打開(kāi)對(duì)的支持打開(kāi)對(duì) 編譯參數(shù)-使用 ./configure -h在源代碼目錄中,該命令可以查看所有編譯參數(shù)以及對(duì)應(yīng)的英文解釋 編譯參數(shù)-說(shuō)明 --prefix=/opt/php //指定 ...
摘要:編譯參數(shù)使用在源代碼目錄中,該命令可以查看所有編譯參數(shù)以及對(duì)應(yīng)的英文解釋編譯參數(shù)說(shuō)明指定安裝目錄整合指定位置指定額外拓展配置歸放處文件夾打開(kāi)安全模式打開(kāi)的支持打開(kāi)對(duì)的支持打開(kāi)對(duì) 編譯參數(shù)-使用 ./configure -h在源代碼目錄中,該命令可以查看所有編譯參數(shù)以及對(duì)應(yīng)的英文解釋 編譯參數(shù)-說(shuō)明 --prefix=/opt/php //指定 ...
摘要:不支持多線程模式和回調(diào)處理,因此內(nèi)部腳本都是同步阻塞式的,如果你發(fā)起一個(gè)的請(qǐng)求,那么程序就會(huì)阻塞,直到請(qǐng)求返回結(jié)果,才會(huì)繼續(xù)執(zhí)行代碼。參考資料手冊(cè)手冊(cè)預(yù)定義常量中實(shí)現(xiàn)多線程請(qǐng)求詳解每次使用同時(shí)并發(fā)多少請(qǐng)求合適簡(jiǎn)書(shū)多線程及原理 后端服務(wù)開(kāi)發(fā)中經(jīng)常會(huì)有并發(fā)請(qǐng)求的需求,比如你需要獲取10家供應(yīng)商的帶寬數(shù)據(jù)(每個(gè)都提供不同的url),然后返回一個(gè)整合后的數(shù)據(jù),你會(huì)怎么做呢? 在PHP中,最直觀...
閱讀 1597·2023-04-25 14:12
閱讀 1070·2021-08-27 16:24
閱讀 2533·2019-08-30 15:44
閱讀 2912·2019-08-30 13:16
閱讀 1665·2019-08-29 14:10
閱讀 966·2019-08-29 13:54
閱讀 1296·2019-08-29 13:09
閱讀 1803·2019-08-26 18:37