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

資訊專(zhuān)欄INFORMATION COLUMN

[譯]php和curl_multi_exec

Freelander / 2773人閱讀

摘要:第一個(gè)負(fù)責(zé)清除緩存。我們阻塞住剩下程序的執(zhí)行直到網(wǎng)絡(luò)的結(jié)束。是之前調(diào)用方法產(chǎn)生的句柄,和都是整型的值。把設(shè)為正在處理的句柄個(gè)數(shù)。所有這些表明我們需要停止處理。手冊(cè)對(duì)這些東西的細(xì)節(jié)有稍微的介紹,但是的文檔更加的完整。

本文是PHP and curl_multi_exec的翻譯

這篇文章闡述了如何從curl_multi句柄獲取數(shù)據(jù)。不久前,我將這段代碼片段貼到了一個(gè)更大的示例代碼中:

我之前沒(méi)有真的去查過(guò)文檔試圖理解過(guò)它。所以這段代碼讓我感到困惑?,F(xiàn)在我來(lái)解釋下它都做了什么。
首先,這里有兩個(gè)外層的循環(huán)。第一個(gè)負(fù)責(zé)清除curl緩存。第二個(gè)負(fù)責(zé)等待更多的數(shù)據(jù),并且獲取到這些數(shù)據(jù)。這就是一個(gè)典型的阻塞I/O例子。我們阻塞住剩下程序的執(zhí)行直到網(wǎng)絡(luò)I/O的結(jié)束。盡管這不是處理網(wǎng)絡(luò)I/O最合適的方法,但對(duì)于單進(jìn)程、同步的PHP,這實(shí)際上是我們僅有的選擇。

讓我們先來(lái)看下第一層循環(huán):

curl_multi_exec嘗試從multi句柄中獲取寫(xiě)數(shù)據(jù)。$multi是之前調(diào)用curl_multi_init()方法產(chǎn)生的句柄,$active$ret都是整型的值。
curl_multi_exec()$active設(shè)為正在處理的句柄個(gè)數(shù)。換句話(huà)說(shuō),如果你正在用這個(gè)句柄請(qǐng)求5個(gè)URL,那么curl_multi_exec將返回5當(dāng)它正在處理所有的5個(gè)URL(應(yīng)該是指curl_multi_exec設(shè)$active為5),然后當(dāng)每個(gè)請(qǐng)求結(jié)束時(shí),這個(gè)數(shù)字將會(huì)逐漸減少直到0。

$ret是如下值的一種:

CURLM_CALL_MULTI_PERFORM (-1):這意味著你需要再次調(diào)用curl_multi_exec(),因?yàn)槿杂袛?shù)據(jù)可供處理。

CURLM_OK(0):如文檔中所說(shuō):“都好了”。這意味著可能有更多的數(shù)據(jù),但還沒(méi)有到呢。

錯(cuò)誤碼中的一個(gè):CURLM_BAD_HANDLE ,CURLM_OUT_OF_MEMORY ,CURLM_INTERNAL_ERROR ,CURLM_BAD_SOCKET 。所有這些表明我們需要停止處理。

所以當(dāng)我們正在執(zhí)行第一層循環(huán),唯一需要我們繼續(xù)迭代的情況就是CURLM_CALL_MULTI_PERFORM。

現(xiàn)在,對(duì)于一些相當(dāng)小的情況,第一層循環(huán)就是你所需要的。然而通常的情況是,第一層循環(huán)會(huì)返回CURL_OK來(lái)表明還會(huì)有更多的數(shù)據(jù),但是這些數(shù)據(jù)還沒(méi)有在網(wǎng)絡(luò)上傳輸過(guò)來(lái)呢。

我們需要wait。

這時(shí)候我們就需要第二層循環(huán):

這層循環(huán)是說(shuō)...

  (while): 只要有活躍的連接,一切還看著都OK…
    (if) 如果網(wǎng)絡(luò)socket還有些數(shù)據(jù)…
      (do/while) 只要系統(tǒng)告訴我們要一直去獲取數(shù)據(jù),我們就處理吧

所以第二層循環(huán)負(fù)責(zé)檢查套接字直到一切就緒。
PHP手冊(cè)對(duì)這些東西的細(xì)節(jié)有稍微的介紹,但是libcurl C的文檔更加的完整。

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

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

相關(guān)文章

  • curl_multi實(shí)現(xiàn)并發(fā)

    摘要:普通請(qǐng)求創(chuàng)建多個(gè)資源并發(fā)創(chuàng)建多個(gè)資源創(chuàng)建批處理句柄增加句柄待優(yōu)化點(diǎn)在執(zhí)行而整個(gè)批處理句柄沒(méi)有全部執(zhí)行完畢時(shí),系統(tǒng)會(huì)不停地執(zhí)行函數(shù)。進(jìn)行改動(dòng)的方式是應(yīng)用函數(shù)庫(kù)中的函數(shù),其函數(shù)原型如下阻塞直到批處理連接中有活動(dòng)連接。 普通請(qǐng)求 curl_normal.php use time:0.830 s curl_multi并發(fā) curl_multi.php use time:0.259 s ...

    shusen 評(píng)論0 收藏0
  • PHP實(shí)現(xiàn)并發(fā)請(qǐng)求

    摘要:不支持多線(xiàn)程模式和回調(diào)處理,因此內(nèi)部腳本都是同步阻塞式的,如果你發(fā)起一個(gè)的請(qǐng)求,那么程序就會(huì)阻塞,直到請(qǐng)求返回結(jié)果,才會(huì)繼續(xù)執(zhí)行代碼。參考資料手冊(cè)手冊(cè)預(yù)定義常量中實(shí)現(xiàn)多線(xiàn)程請(qǐng)求詳解每次使用同時(shí)并發(fā)多少請(qǐng)求合適簡(jiǎn)書(shū)多線(xiàn)程及原理 后端服務(wù)開(kāi)發(fā)中經(jīng)常會(huì)有并發(fā)請(qǐng)求的需求,比如你需要獲取10家供應(yīng)商的帶寬數(shù)據(jù)(每個(gè)都提供不同的url),然后返回一個(gè)整合后的數(shù)據(jù),你會(huì)怎么做呢? 在PHP中,最直觀...

    zhangfaliang 評(píng)論0 收藏0
  • 基于haddop的HDFSExcel開(kāi)源庫(kù)POI導(dǎo)出大數(shù)據(jù)報(bào)表(一)

    摘要:說(shuō)明這里用到的項(xiàng)目都是基于的項(xiàng)目。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。能提供高吞吐量的數(shù)據(jù)訪(fǎng)問(wèn),非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。放寬了一部分約束,來(lái)實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。是項(xiàng)目的一部分。 關(guān)鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報(bào)表 需求背景 在業(yè)務(wù)需求方面,每個(gè)企業(yè)或多或少都會(huì)有報(bào)表導(dǎo)出的作業(yè),量少則可是使用輸出流或者字符串的...

    Nekron 評(píng)論0 收藏0
  • 基于haddop的HDFSExcel開(kāi)源庫(kù)POI導(dǎo)出大數(shù)據(jù)報(bào)表(一)

    摘要:說(shuō)明這里用到的項(xiàng)目都是基于的項(xiàng)目。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。能提供高吞吐量的數(shù)據(jù)訪(fǎng)問(wèn),非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。放寬了一部分約束,來(lái)實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。是項(xiàng)目的一部分。 關(guān)鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報(bào)表 需求背景 在業(yè)務(wù)需求方面,每個(gè)企業(yè)或多或少都會(huì)有報(bào)表導(dǎo)出的作業(yè),量少則可是使用輸出流或者字符串的...

    luffyZh 評(píng)論0 收藏0
  • PHP使用curl_multi并發(fā)請(qǐng)求

    摘要:根據(jù)獲取請(qǐng)求對(duì)象這個(gè)比較簡(jiǎn)單可以看官方文檔將三個(gè)待請(qǐng)求對(duì)象放入下載器中輪詢(xún)一旦有一個(gè)請(qǐng)求完成,找出來(lái),處理因?yàn)榈讓邮牵宰畲笫芟抻趶恼?qǐng)求中獲取信息內(nèi)容錯(cuò)誤把請(qǐng)求已經(jīng)完成了得刪除當(dāng)沒(méi)有數(shù)據(jù)的時(shí)候進(jìn)行堵塞,把使用權(quán)交出來(lái),避免上面死循環(huán)空跑數(shù) class CurlMultiUtil { /** * 根據(jù)url,postData獲取curl請(qǐng)求對(duì)象,這個(gè)比較簡(jiǎn)單,可以看官方...

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

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

0條評(píng)論

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