Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie cURL zum Senden von Anfragen, zum Hochladen von Bildern und zur Stapelverarbeitung in PHP

So verwenden Sie cURL zum Senden von Anfragen, zum Hochladen von Bildern und zur Stapelverarbeitung in PHP

不言
不言nach vorne
2018-10-15 14:24:583107Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Implementierungsmethode für das Senden von Anfragen, das Hochladen von Bildern und die Stapelverarbeitung. Ich hoffe, dass er für Sie hilfreich ist . .

cURL ist ein Tool, das URL-Syntax zum Übertragen von Dateien und Daten verwendet. In PHP gibt es die Curl-Erweiterung, die im Allgemeinen zum Implementieren von Netzwerk-Crawling, zum Simulieren des Sendens von Get-Post-Anfragen und zum Hochladen von Dateien verwendet wird.

Die grundlegenden Schritte zum Einrichten von Curl in PHP sind wie folgt:

1. Optionen festlegen, einschließlich URL

3 Erhalten Sie die Ergebnisse

4. Lassen Sie den Lockengriff los.

Ich verwende Curl auch oft bei meiner Arbeit und beim Lernen. Da es schwierig ist, sich die verschiedenen Optionen zu merken, wenn Curl zum Festlegen von Optionen verwendet wird, und sie referenziert werden müssen, werden hier einige häufig verwendete Beispiele zum späteren Nachschlagen aufgezeichnet.

Beispiel 1: Erfassen von Webseitendaten (am Beispiel der offenen API von Lashou.com ist es auch eine Get-Anfrage)

<?php
header("Content-type: text/html; charset=utf-8"); 
$ch = curl_init();//初始化

/*============开始设置curl各种选项================*/
curl_setopt($ch, CURLOPT_URL, "http://open.lashou.com/opendeals/lashou/city.xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


$html = curl_exec($ch);//执行句柄,获取返回内容

curl_close($ch);//释放句柄

echo $html

Wenn Sie diese Methode zum Senden einer Get-Anfrage verwenden, hängen Sie einfach die Parameter an das Ende der URL an, z. B. curl_setopt($ch, CURLOPT_URL, "http://localhost/tqj/date/ p822.php?name=yyyyy");

Beispiel 2: Verwenden Sie Curl, um eine Post-Anfrage zu senden

<?php
$uri = "http://localhost/tqj/date/p822.php";

// post参数数组
$data = array (
        &#39;name&#39; => &#39;tianquanjun&#39;,
        &#39;password&#39; => &#39;tianquanjun&#39;,
);

//初始化
$ch = curl_init ();

//各种项设置,网上参考而来,可以查看php手册,自己设置
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

//执行
$return = curl_exec ( $ch );
//释放
curl_close ( $ch );

print_r($return);

Beispiel 3: Debuggen des Curl-Prozesses und Behandlung von Fehlermeldungen

<?php
$uri = "http://localhost/tqj/date/p822.php";

// post参数数组
$data = array (
        &#39;name&#39; => &#39;tianquanjun&#39;,
        &#39;password&#39; => &#39;tianquanjun&#39;,
);

//初始化
$ch = curl_init ();

//各种项设置,网上参考而来,可以查看php手册,自己设置
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

//执行
$return = curl_exec ( $ch );

//容错机制
if($return === false){
    var_dump(curl_error($ch));
    }

//curl_getinfo()获取各种运行中信息,便于调试 
$info = curl_getinfo($ch);

echo "执行时间".$info[&#39;total_time&#39;].PHP_EOL;

//释放
curl_close ( $ch );

print_r($return);
?>

Verwenden Sie curl_error(), um Fehlerinformationen abzurufen, und curl_getinfo(), um diese abzurufen laufende Informationen.

Beispiel 4: Bilder hochladen und Rücksendeinformationen erhalten.

Bilder domänenübergreifend hochladen und gleichzeitig Rückgabeinformationen erhalten. Dies kann sehr nützlich sein. Es ähnelt dem Posten. Beachten Sie, dass vor der Datei ein @-Symbol hinzugefügt wird

<?php
$uri = "http://localhost/tqj/date/p822.php";

// post参数数组
$data = array (
        &#39;author&#39; => &#39;tianquanjun&#39;,
        &#39;upload&#39; => &#39;@C:\Users\tianquanjun.DANGDANG\Pictures\a.jpg&#39;,
);

//初始化
$ch = curl_init ();

//各种项设置,网上参考而来,可以查看php手册,自己设置
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );

//执行
$return = curl_exec ( $ch );

//容错机制
if($return === false){
    var_dump(curl_error($ch));
    }

//curl_getinfo()获取各种运行中信息,便于调试 
$info = curl_getinfo($ch);

echo "执行时间".$info[&#39;total_time&#39;].PHP_EOL;

//释放
curl_close ( $ch );

print_r($return);

Beispiel 5: Curl-Stapelverarbeitung.

Curl verfügt über eine erweiterte Funktion, Batch-Handler. Ermöglicht das Öffnen mehrerer Curl-Links.

Bei der Stapelverarbeitung werden mehrere Curl-Handles geöffnet, diese Handles einem Stapelhandle zugewiesen und dann in einer While-Schleife auf den Abschluss der Verarbeitung gewartet. curl_multi_exec() kann als Multithread-Verarbeitung bezeichnet werden, gehört aber immer noch zur asynchronen Kategorie.

<?php
header("Content-type: text/html; charset=gbk");
$urls=array(&#39;http://www.baidu.com&#39;,&#39;http://www.qq.com/&#39;);
$ch=array();
//批处理句柄
$mh=curl_multi_init();

//打开多个curl句柄,并指派给一个批处理句柄
$ch[0]=curl_init($urls[0]);
$ch[1]=curl_init($urls[1]);
for($i=0;$i<2;$i++)
{
curl_setopt($ch[$i],CURLOPT_RETURNTRANSFER,1);
curl_multi_add_handle($mh,$ch[$i]);

}
$running = NULL;
do{
    usleep(10000);
    curl_multi_exec($mh,$running);//实现批处理,可以看做curl多线程,实际是异步范畴
}while($running>0);
$res=array();
for($j=0;$j<2;$j++)
{
    $res[$j]=curl_multi_getcontent($ch[$j]);
}

//关闭句柄
for($k=0;$k<2;$k++)
{
    curl_multi_remove_handle($mh,$ch[$k]);
}
curl_multi_close($mh);

print_r($res);


?>

Listet im Wesentlichen einige häufig verwendete Beispiele auf. Wenn Sie Curl flexibel nutzen möchten, müssen Sie dennoch mit den verschiedenen Einstellungen von Curl vertraut sein. Diese Einstellungen sind die Seele von Curl.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie cURL zum Senden von Anfragen, zum Hochladen von Bildern und zur Stapelverarbeitung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen