国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
鑰匙要點
的URL
curlopt_url - 文件的URL,請注意使用“ ftp://”而不是“ http://”
發(fā)送多個請求
>故障排除
結(jié)論
curl是什麼,為什麼它在php?
curl或客戶端URL中使用,是一個允許您在PHP中提出HTTP請求的庫。它用於與不同類型的服務(wù)器進行通信並下載或上傳數(shù)據(jù)。 Curl支持HTTP,HTTP,F(xiàn)TP等各種協(xié)議。這是一個強大的工具,可用於與API進行交互,刮擦網(wǎng)頁甚至下載文件。
>
>如何使用curl?
>您可以使用curlopt_httpheader選項。此選項將標題數(shù)組作為其值。以下是一個示例:
要遵循重定向,您需要將curlopt_followlocation選項設(shè)置為true。您可以做到這一點:
>我如何從curl請求中獲取響應(yīng)標頭?響應(yīng)標頭,您可以將curlopt_header選項設(shè)置為true。這將包括輸出中的標題。這是一個示例:
首頁 後端開發(fā) php教程 PHP主|使用捲曲來遠程請求

PHP主|使用捲曲來遠程請求

Feb 23, 2025 am 10:14 AM

態(tài)如果您是Linux用戶,那麼您可能已經(jīng)使用了捲髮。這是一個強大的工具,用於從發(fā)送電子郵件到下載最新的《我的小馬匹》字幕。在本文中,我將解釋如何在PHP中使用捲曲擴展。該擴展名為我們提供了PHP舒適世界中的主機實用程序的功能。我將討論發(fā)送和發(fā)布請求,處理登錄cookie和FTP功能。 在開始之前,請確保您安裝了擴展名(和libcurl庫)。默認情況下不安裝它。在大多數(shù)情況下,可以使用系統(tǒng)的軟件包管理器安裝它,但是除非您可以在PHP手冊中找到說明。

鑰匙要點

  • curl是一種功能強大的工具,用於從發(fā)送電子郵件到下載字幕的各種任務(wù),可以通過提供與控制臺實用程序相同的功能的擴展。
  • curl可用於檢索網(wǎng)頁,登錄網(wǎng)站,使用FTP並發(fā)送多個請求。例如,您可以通過發(fā)送帶有特定詳細信息的發(fā)布請求來模擬登錄到WordPress驅(qū)動的網(wǎng)站。
  • 使用兩個函數(shù)簡化了
  • 故障排除捲曲請求:curl_getinfo()和curl_error()。這些功能提供了有關(guān)頻道以及請求期間可能發(fā)生的任何錯誤的詳細信息。
  • 捲曲是一種進行遠程調(diào)用的高效且強大的工具,使其非常適合訪問外部API或爬行等任務(wù)。它提供了一個用戶友好的界面和請求相對容易執(zhí)行。
  • >
  • 如何工作?
> 所有捲曲請求遵循相同的基本模式:

首先,我們通過調(diào)用curl_init()函數(shù)來初始化捲曲資源(通常為“ curl hander”> ch> ch
    )。
  1. 接下來,我們將設(shè)置各種選項,例如URL,請求方法,有效負載數(shù)據(jù)等??梢允褂肅url_setopt()單獨設(shè)置選項,或者我們可以將選項數(shù)組傳遞到Curl_setopt_array()。 然後,我們通過調(diào)用curl_exec()。 >執(zhí)行請求
  2. 最後,我們釋放了資源以清除內(nèi)存。
  3. >
  4. 因此,用於提出請求的樣板代碼看起來像這樣:
  5. 為請求而更改的唯一一件事是設(shè)置了哪些選項,哪些選項當然取決於您對捲髮的工作。
  6. 檢索網(wǎng)頁
  7. 我能想到的最基本的示例是僅獲取網(wǎng)頁的內(nèi)容。因此,讓我們以BBC的主頁為例。
  8. 檢查瀏覽器中的輸出,您應(yīng)該看到顯示的BBC網(wǎng)站。我們很幸運,因為該站點的顯示正確,因為它的絕對鏈接到樣式表和圖像。 我們剛剛使用的選項是:
<span><span><?php
</span></span><span><span>// init the resource
</span></span><span><span>$ch = curl_init();
</span></span><span>
</span><span><span>// set a single option...
</span></span><span><span>curl_setopt($ch, OPTION, $value);
</span></span><span><span>// ... or an array of options
</span></span><span><span>curl_setopt_array($ch, array(
</span></span><span><span>OPTION1 => $value1,
</span></span><span><span>OPTION2 => $value2
</span></span><span><span>));
</span></span><span>
</span><span><span>// execute
</span></span><span><span>$output = curl_exec($ch);
</span></span><span>
</span><span><span>// free
</span></span><span><span>curl_close($ch);</span></span>
curlopt_url - 指定請求

的URL

  • > curlopt_returntransfer - 設(shè)置false時,curl_exec()根據(jù)請求的成功返回true或false。設(shè)置為true時,curl_exec()返迴響應(yīng)的內(nèi)容。
  • >登錄到網(wǎng)站

    捲髮執(zhí)行了檢索BBC頁面的GET請求,但是Curl也可以使用其他方法,例如POST和PUT。在此示例中,讓我們模擬登錄以WordPress為動力的網(wǎng)站。登錄是通過將POST請求發(fā)送到>的登錄名來完成: 登錄 - 用戶名
      >
    • > PWD - 密碼
    • redirect_to - 登錄
    • >之後我們要轉(zhuǎn)到的URL
    • > TestCookie - 應(yīng)將其設(shè)置為1(僅適用於WordPress) 當然,這些參數(shù)對每個站點都有特定。您應(yīng)該始終自己檢查輸入名稱,這可以通過查看瀏覽器中的HTML頁面的來源很容易完成。
    • 新選項是:
    > curlopt_post - 如果要發(fā)送郵政請求
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    ,請設(shè)置此true
      > curlopt_postfields - 將在請求正文中發(fā)送的數(shù)據(jù)
    • >
    • curlopt_followlocation - 如果設(shè)置為true,則curl將遵循重定向
    • 哦!但是,如果您測試上述內(nèi)容,則會看到一個錯誤消息:“錯誤:cookie被瀏覽器阻止或不支持。您必須允許cookie使用WordPress?!边@是正常的,因為我們需要啟用cookie才能工作。我們通過添加兩個選項來做到這一點。
    • 新選項是:
    > curlopt_cookiesession-如果設(shè)置為true,curl將啟動新的cookie會話,而忽略任何以前
    <span><span><?php
    </span></span><span><span>curl_setopt_array(
    </span></span><span><span>$ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    > curlopt_cookiejar - 這是文件的名稱,其中curl應(yīng)保存cookie信息。確保您有正確寫入文件的權(quán)限!
      >
    • 現(xiàn)在我們已登錄,我們只需要引用cookie文件以獲取後續(xù)請求。
    • 與FTP
    • 一起工作 使用Curl通過FTP下載和上傳文件也很容易。讓我們看下載文件:
    • 請注意,出於安全原因,沒有太多允許匿名上傳和下載的公共FTP服務(wù)器,因此上面的URL和憑據(jù)只是位置持有人。 這與發(fā)送HTTP請求幾乎相同,但只有幾個較小的差異:

    curlopt_url - 文件的URL,請注意使用“ ftp://”而不是“ http://”

    <span><span><?php
    </span></span><span><span>$postData = array(
    </span></span><span><span>'login' => 'acogneau',
    </span></span><span><span>'pwd' => 'secretpassword',
    </span></span><span><span>'redirect_to' => 'http://example.com',
    </span></span><span><span>'testcookie' => '1'
    </span></span><span><span>);
    </span></span><span>
    </span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true,
    </span></span><span><span>CURLOPT_POST => true,
    </span></span><span><span>CURLOPT_POSTFIELDS => $postData,
    </span></span><span><span>CURLOPT_FOLLOWLOCATION => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    curlot_userpwd - FTP服務(wù)器的登錄憑據(jù)
    • 通過FTP上載文件的複雜稍複雜,但仍然可以管理??雌饋硐襁@樣:
    • 這裡的重要選擇是:
    • > curlopt_upload - 顯而易見的布爾
    <span><span><?php
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true,
    </span></span><span><span>CURLOPT_POST => true,
    </span></span><span><span>CURLOPT_POSTFIELDS => $postData,
    </span></span><span><span>CURLOPT_FOLLOWLOCATION => true,
    </span></span><span><span>CURLOPT_COOKIESESSION => true,
    </span></span><span><span>CUROPT_COOKIEJAR => 'cookie.txt'
    </span></span><span><span>));</span></span>
    > curlopt_infile - 我們想要上傳的文件的可讀流
      > curlopt_infilesize - 我們要在字節(jié)中上傳的文件大小

    發(fā)送多個請求

    想像一下,我們必須執(zhí)行五個請求才能檢索所有必要的數(shù)據(jù)。請記住,某些事情將無法控制,例如網(wǎng)絡(luò)延遲和目標服務(wù)器的響應(yīng)速度。那麼,很明顯的是,連續(xù)五次通話時的任何延誤確實可以加起來!緩解此問題的一種方法是異步發(fā)出請求。 異步技術(shù)在JavaScript和Node.js社區(qū)中更為常見,但短暫地,我們不再等待耗時的任務(wù)完成,而是將任務(wù)分配給其他線程或過程,並在此期間繼續(xù)做其他事情。任務(wù)完成後,我們回來以取得結(jié)果。重要的是,我們沒有浪費時間等待結(jié)果;我們花了它獨立執(zhí)行其他代碼。 執(zhí)行多種異步捲曲請求的方法與以前有所不同。我們從相同的開始 - 我們啟動每個頻道然後設(shè)置選項 - 但是我們使用curl_multi_init()啟動多手漢,並使用curl_multi_add_handle()添加我們的頻道。我們通過循環(huán)並檢查其狀態(tài)來執(zhí)行處理程序。最後,我們獲得了curl_multi_getContent()的響應(yīng)內(nèi)容。
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    上述代碼花費了大約1,100毫秒來在我的筆記本電腦上執(zhí)行。依次執(zhí)行請求,而無需大約2,000毫秒的多接口。想像一下,如果您發(fā)送數(shù)百個請求,您的收益將是多少! 存在多個項目,可以抽象並包裝多接口。討論它們超出了文章的範圍,但是如果您打算異步發(fā)出多個請求,那麼我建議您看看它們:
    • github.com/petewarden/parallelcurl
    • > semlabs.co.uk/journal/Object-Eriended-curl-class-curl-class-with-multi-threading

    >故障排除

    如果您使用的是捲曲,那麼您可能正在向第三方服務(wù)器執(zhí)行請求。您無法控制它們,並且可能會出錯:服務(wù)器可以離線,目錄結(jié)構(gòu)可以改變等。我們需要一種有效的方法來找出某些事物不起作用時出了什麼問題,幸運的是,Curl為此提供了兩個功能: curl_getinfo()和curl_error() 。 curl_getinfo()返回一個數(shù)組,其中包含有關(guān)頻道的所有信息,因此,如果要檢查一切是否正確,則可以使用:
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    如果彈出錯誤,您可以使用curl_error()檢查出來:
    <span><span><?php
    </span></span><span><span>curl_setopt_array(
    </span></span><span><span>$ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>

    結(jié)論

    Curl提供了一種強大而有效的方式來撥打遠程通話,因此,如果您需要爬網(wǎng)或訪問外部API的東西,則curl是工作的絕佳工具。它為我們提供了一個不錯的接口和相對簡單的執(zhí)行請求的方法。有關(guān)更多信息,請訪問PHP手冊和Curl網(wǎng)站。下次見! >對本文的評論已關(guān)閉。對PHP有疑問嗎?為什麼不在我們的論壇上詢問? 通過fotolia 圖像 >常見問題(常見問題解答)有關(guān)將捲曲用於遠程請求的問題

    curl是什麼,為什麼它在php?

    curl或客戶端URL中使用,是一個允許您在PHP中提出HTTP請求的庫。它用於與不同類型的服務(wù)器進行通信並下載或上傳數(shù)據(jù)。 Curl支持HTTP,HTTP,F(xiàn)TP等各種協(xié)議。這是一個強大的工具,可用於與API進行交互,刮擦網(wǎng)頁甚至下載文件。

    >我如何安裝和啟用php?

    curl通常包含在大多數(shù)中Web服務(wù)器。但是,如果不啟用它,則可以通過修改php.ini文件來做到這一點。找到“; Extension = Curl”的線,然後卸下分號。如果該行不存在,則可以在文件末尾添加。更改後,保存文件並重新啟動您的Web服務(wù)器。

    >如何在PHP中簡單捲曲請求? curl_init()函數(shù)。然後,使用curl_setopt()函數(shù)設(shè)置您的選項。最後,使用curl_exec()執(zhí)行請求,然後用curl_close()關(guān)閉會話。這是一個基本示例:

    $ ch = curl_init();

    curl_setopt($ ch,curlopt_url,“ http://example.com”);
    curl_setopt( );
    $ output = curl_exec($ ch);
    curl_close($ ch);

    >
    >如何處理curl中的錯誤?

    >

    >

    >
    >您可以通過使用curl_errno()和curl_error()和curl_error()和curl_error( )功能。這些函數(shù)分別返回最後一個錯誤編號和錯誤消息。以下是一個示例:

    if(curl_errno($ ch)){ echo'錯誤:'。 curl_error($ ch);
    }

    >如何使用curl?

    發(fā)送發(fā)布請求,以發(fā)送郵政請求,您需要將curlopt_post選項設(shè)置為true,然後將curlopt_postfields選項設(shè)置為要發(fā)送的一系列數(shù)據(jù)。以下是一個示例:

    curl_setopt($ ch,curlopt_post,1);
    curl_setopt($ ch,curlopt_postfields,“ postVar1 = value1&postvar2 = value2 = value2”)捲曲請求的標題?

    >您可以使用curlopt_httpheader選項。此選項將標題數(shù)組作為其值。以下是一個示例:

    $ headers = array(
    'content-type:application/json',
    '授權(quán):bearer'。$ token
    );
    curl_setopt( $ curl_setopt($ CH,curlopt_httpheader,$ headers);

    >我如何跟隨捲曲重定向?

    >

    要遵循重定向,您需要將curlopt_followlocation選項設(shè)置為true。您可以做到這一點:


    curl_setopt($ ch,curlopt_followlocation,true);

    >我如何從curl請求中獲取響應(yīng)標頭?響應(yīng)標頭,您可以將curlopt_header選項設(shè)置為true。這將包括輸出中的標題。這是一個示例:

    curl_setopt($ ch,curlopt_header,true);

    如何使用curl?

    發(fā)送文件,您可以使用文件,您可以使用該文件curlopt_postfields選項,並將文件路徑帶有@符號。以下是一個示例:

    curl_setopt($ ch,curlopt_postfields,array('file'=>'@/path/path/to/file.txt'));


    代理?

    用於將捲曲與代理使用,您可以將curlopt_proxy選項設(shè)置為代理的地址。您可以做到這一點:

    curl_setopt($ ch,curlopt_proxy,“ http://proxy.example.com:8080”);

    >

    以上是PHP主|使用捲曲來遠程請求的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

    本網(wǎng)站聲明
    本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發(fā)環(huán)境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網(wǎng)頁開發(fā)工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    如何在PHP中實施身份驗證和授權(quán)? 如何在PHP中實施身份驗證和授權(quán)? Jun 20, 2025 am 01:03 AM

    tosecurelyhandleauthenticationandationallizationInphp,lofterTheSesteps:1.AlwaysHashPasswordSwithPassword_hash()andverifyusingspasspassword_verify(),usepreparedStatatementStopreventsqlineptions,andStoreSeruserDatain usseruserDatain $ _sessiveferterlogin.2.implementrole-2.imaccessccsccccccccccccccccccccccccc.

    如何在PHP中安全地處理文件上傳? 如何在PHP中安全地處理文件上傳? Jun 19, 2025 am 01:05 AM

    要安全處理PHP中的文件上傳,核心在於驗證文件類型、重命名文件並限制權(quán)限。 1.使用finfo_file()檢查真實MIME類型,僅允許特定類型如image/jpeg;2.用uniqid()生成隨機文件名,存儲至非Web根目錄;3.通過php.ini和HTML表單限製文件大小,設(shè)置目錄權(quán)限為0755;4.使用ClamAV掃描惡意軟件,增強安全性。這些步驟有效防止安全漏洞,確保文件上傳過程安全可靠。

    PHP中==(鬆散比較)和===(嚴格的比較)之間有什麼區(qū)別? PHP中==(鬆散比較)和===(嚴格的比較)之間有什麼區(qū)別? Jun 19, 2025 am 01:07 AM

    在PHP中,==與===的主要區(qū)別在於類型檢查的嚴格程度。 ==在比較前會進行類型轉(zhuǎn)換,例如5=="5"返回true,而===要求值和類型都相同才會返回true,例如5==="5"返回false。使用場景上,===更安全應(yīng)優(yōu)先使用,==僅在需要類型轉(zhuǎn)換時使用。

    如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進行交互? 如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進行交互? Jun 19, 2025 am 01:07 AM

    是的,PHP可以通過特定擴展或庫與MongoDB和Redis等NoSQL數(shù)據(jù)庫交互。首先,使用MongoDBPHP驅(qū)動(通過PECL或Composer安裝)創(chuàng)建客戶端實例並操作數(shù)據(jù)庫及集合,支持插入、查詢、聚合等操作;其次,使用Predis庫或phpredis擴展連接Redis,執(zhí)行鍵值設(shè)置與獲取,推薦phpredis用於高性能場景,Predis則便於快速部署;兩者均適用於生產(chǎn)環(huán)境且文檔完善。

    如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? 如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? Jun 19, 2025 pm 05:13 PM

    PHP中使用基本數(shù)學(xué)運算的方法如下:1.加法用 號,支持整數(shù)和浮點數(shù),也可用於變量,字符串數(shù)字會自動轉(zhuǎn)換但不推薦依賴;2.減法用-號,變量同理,類型轉(zhuǎn)換同樣適用;3.乘法用*號,適用於數(shù)字及類似字符串;4.除法用/號,需避免除以零,並註意結(jié)果可能是浮點數(shù);5.取模用%號,可用於判斷奇偶數(shù),處理負數(shù)時餘數(shù)符號與被除數(shù)一致。正確使用這些運算符的關(guān)鍵在於確保數(shù)據(jù)類型清晰並處理好邊界情況。

    我如何了解最新的PHP開發(fā)和最佳實踐? 我如何了解最新的PHP開發(fā)和最佳實踐? Jun 23, 2025 am 12:56 AM

    TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

    什麼是PHP,為什麼它用於Web開發(fā)? 什麼是PHP,為什麼它用於Web開發(fā)? Jun 23, 2025 am 12:55 AM

    PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

    如何設(shè)置PHP時區(qū)? 如何設(shè)置PHP時區(qū)? Jun 25, 2025 am 01:00 AM

    tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

    See all articles