Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung der Verwendung von CURL in PHP

Detaillierte Erklärung der Verwendung von CURL in PHP

不言
不言Original
2018-04-13 09:54:142595Durchsuche

Der Inhalt dieses Artikels stellt eine detaillierte Erklärung der Verwendung von CURL in PHP vor. Jetzt können Freunde in Not darauf verweisen.

CURL ist eine sehr leistungsstarke Open Source Bibliothek, die viele Protokolle unterstützt, einschließlich HTTP, FTP, TELNET usw., wir verwenden sie zum Senden von HTTP-Anfragen. Der Vorteil besteht darin, dass wir durch flexible Optionen verschiedene HTTP-Protokollparameter festlegen können und HTTPS unterstützt. CURL kann automatisch auswählen, ob der gesendete Inhalt verschlüsselt werden soll, je nachdem, ob das URL-Präfix „HTTP“ oder „HTTPS“ ist.

Der grundlegende Prozess des Sendens einer Anfrage mit CURL

Die Verwendung der PHP-Erweiterung von CURL zum Abschließen des Sendens einer HTTP-Anfrage umfasst im Allgemeinen die folgenden Schritte:

  1. Verbindungshandle initialisieren; CURL-Optionen festlegen;

  2. Ausführen und das Ergebnis abrufen;

  3. Geben Sie das VURL-Verbindungshandle frei.

  4. Das folgende Programmfragment ist ein typischer Prozess zum Senden von HTTP mit CURL


Detaillierte Erklärung der Verwendung von CURL in PHP

// 1. 初始化
 $ch = curl_init(); // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0); // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch); if($output === FALSE ){ echo "CURL Error:".curl_error($ch);
 } // 4. 释放curl句柄
 curl_close($ch);

Im obigen Code werden vier Funktionen verwendet Detaillierte Erklärung der Verwendung von CURL in PHP

curl_init() und curl_close() bzw. Es ist relativ einfach, die CURL-Verbindung zu initialisieren und die CURL-Verbindung zu schließen.

  • curl_exec() führt eine CURL-Anfrage aus. Wenn kein Fehler auftritt, gibt die Funktion die von der entsprechenden URL zurückgegebenen Daten zurück und gibt die Zufriedenheit als Zeichenfolge an FALSCH. Es ist zu beachten, dass das Gleichheitszeichen verwendet wird, um zu bestimmen, ob die Ausgabe FALSE ist. Dies dient der Unterscheidung zwischen der Rückgabe einer leeren Zeichenfolge und einem Fehler.

  • Die wichtigste Funktion in der CURL-Funktionsbibliothek ist curl_setopt(), die HTTP-Anfragen anpassen kann, indem sie von der CURL-Funktionsbibliothek definierte Optionen festlegt. Im obigen Codeausschnitt werden drei wichtige Optionen verwendet:

  • CURLOPT_URL gibt die angeforderte URL an;

  1. CURLOPT_RETURNTRANSFER ist auf 1 gesetzt. Die Rückgabe der später ausgeführten Funktion „curl_exec“ ist die Rückgabezeichenfolge der URL, anstatt die Rückgabezeichenfolge an die Standardausgabe weiterzuleiten und TRUE zurückzugeben; CURLLOPT_HEADER wird auf 0 gesetzt, um dies anzuzeigen Es werden keine Abteilungsinformationen im HTTP-Header zurückgegeben.

  2. Es gibt viele Optionen für CURL. Sie können die offizielle Website von PHP besuchen (http://www.php.net/manual/en/function.curl-setopt. php), um eine Liste aller von CURL unterstützten Optionen anzuzeigen.

  3. Rufen Sie die Ausgabeinformationen der CURL-Anfrage ab
  4. Nachdem die Funktion „curl_exec()“ ausgeführt wurde, können Sie die Funktion „curl_getinfo()“ verwenden, um die relevanten Informationsausgaben der CURL-Anfrage abzurufen Der Code lautet wie folgt:

    curl_exec($ch);$info = curl_getinfo($sh);echo ' 获取 '.$info['url'].'耗时'.$info['total_time'].'秒';

    上述代码中curl_getinfo返回的是一个关联数组,包含以下数据:

    • url:网络地址。

    • content_type:内容编码。

    • http_code:HTTP状态码。

    • header_size:header的大小。

    • request_size:请求的大小。

    • filetime:文件创建的时间。

    • ssl_verify_result:SSL验证结果。

    • redirect_count:跳转计数。

    • total_time:总耗时。

    • namelookup_time:DNS查询耗时。

    • connect_time:等待连接耗时。

    • pretransfer_time:传输前准备耗时。

    • size_uplpad:上传数据的大小。

    • size_download:下载数据的大小。

    • speed_download:下载速度。

    • speed_upload:上传速度。

    • download_content_length:下载内容的长度。

    • upload_content_length:上传内容的长度。

    • starttransfer_time:开始传输的时间表。

    • redirect_time:重定向耗时。

    curl_getinfo()函数还有一个可选择参数$opt,通过这个参数可以设置一些常量,对应到上术这个字段,如果设置了第二个参数,那么返回的只有指定的信息。例如设置$opt为CURLINFO_TOTAL_TIME,则curl_getinfo()函数只返回total_time,即总传输消耗的时间,在只需要关注某些传输信息时,设置$opt参数很有意义。

    使用CURL发送GET请求

    如何使用CURL来发送GET请求,发送GET请求的关键是拼装格式正确的URL。请求地址和GET数据由一个“?”分割,然后GET变量的名称和值用“=”分隔,各个GET名称和值由“&”连接。PHP为我们提供了一个函数专门用来拼装GET请求和数据部分——http_build_query,该函数接受一个关联数组,返回由该关联数据描述的GET请求字符串。使用这个函数,结合CURL发送HTTP请求的一般流程,我们封闭了一个发送GET请求的函数——doCurlGetRequest,具体代码如下:


    Detaillierte Erklärung der Verwendung von CURL in PHP

    **
     *@desc 封闭curl的调用接口,get的请求方式。*/function doCurlGetRequest($url,$data,$timeout = 5){ if($curl == "" || $timeout <p class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.5;"><img src="https://img.php.cn/upload/article/000/153/291/88596a8d53f6dae6de7dddd6f6df4237-0.gif" alt="Detaillierte Erklärung der Verwendung von CURL in PHP"></span></p><p   style="max-width:90%">这个函数把使用http_build_query 拼装好的带GET参数的URL传给curl_init函数,然后使用CURL发送HTTP请求。</p><h2 style="margin-top:20px;margin-bottom:20px;padding:0px;font-size:21px;line-height:1.5;color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;background-color:rgb(255,255,255);">使用CURL发送POST请求</h2><p style="margin:10px auto;color:rgb(51,51,51);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;background-color:rgb(255,255,255);">可以使用CURL提供的选项CURLOPT_POSTFIELDS,设置该选项为POST字符串数据就可以把请求放在正文中。同样我们实现了一个发送POST请求的函数——doCurlPostRequest,代码如下:</p><p class="cnblogs_code" style="margin:5px 0px;padding:5px;background-color:rgb(245,245,245);border:1px solid rgb(204,204,204);color:rgb(0,0,0);font-family:'Courier New';font-size:12px;"><br></p><p class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.5;"><img src="https://img.php.cn/upload/article/000/153/291/88596a8d53f6dae6de7dddd6f6df4237-0.gif" alt="Detaillierte Erklärung der Verwendung von CURL in PHP"></span></p><pre   style="max-width:90%"Courier New';" class="brush:php;toolbar:false;">/**
    ** @desc 封装 curl 的调用接口,post的请求方式
    **/function doCurlPostRequest($url,$requestString,$timeout = 5){ if($url == '' || $requestString == '' || $timeout <p class="cnblogs_code_toolbar" style="margin:5px 0px 0px;padding:0px;"><span class="cnblogs_code_copy" style="margin:0px;padding:0px 5px 0px 0px;line-height:1.5;"><img src="https://img.php.cn/upload/article/000/153/291/88596a8d53f6dae6de7dddd6f6df4237-0.gif" alt="Detaillierte Erklärung der Verwendung von CURL in PHP"></span></p><p   style="max-width:90%">上面代码中除了设置CURLOPT_POSTFIELDS外,我们还设置了CURL_POST为true,标识这个请求是一个POST请求。在POST请求中也是可以传输GET数据的,只需要在URL中拼装GET请求数据即可秀</p><p style="margin: 10px auto; color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);">相关推荐:</p><p style="margin: 10px auto; color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><a href="http://www.php.cn/php-weizijiaocheng-392124.html" target="_self">PHP中如何利用CURL实现GET和POST请求</a></p><p style="margin: 10px auto; color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><a href="http://www.php.cn/php-weizijiaocheng-392115.html" target="_self">PHP利用CURL将他人服务器图片上传到自己的图片云空间</a></p><p style="margin: 10px auto; color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);"><a href="http://www.php.cn/php-weizijiaocheng-392063.html" target="_self">PHP中的curl 函数并发实现减少后端访问时间</a></p>

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Verwendung von CURL in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn