Maison  >  Article  >  développement back-end  >  Comment utiliser cURL pour envoyer des requêtes, télécharger des images et traiter par lots en PHP

Comment utiliser cURL pour envoyer des requêtes, télécharger des images et traiter par lots en PHP

不言
不言avant
2018-10-15 14:24:583051parcourir

Le contenu de cet article concerne la méthode d'implémentation de l'utilisation de cURL pour envoyer des requêtes, télécharger des images et traiter par lots en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. .

cURL est un outil qui utilise la syntaxe URL pour transférer des fichiers et des données. Il existe une extension curl en PHP, qui est généralement utilisée pour implémenter l'exploration du réseau, simuler l'envoi de requêtes get post et le téléchargement de fichiers.

Les étapes de base pour établir curl en php sont les suivantes :

1. Initialisation

2. Définir les options, y compris l'URL

3. obtenez les résultats

4. Relâchez la poignée curl.

J'utilise aussi souvent curl dans mon travail et mes études. Étant donné que les différentes options sont difficiles à mémoriser lors de l'utilisation de curl pour définir des options et doivent être référencées, certains exemples couramment utilisés sont enregistrés ici pour référence ultérieure.

Exemple 1 : Capturer les données d'une page Web (en prenant l'API ouverte de Lashou.com comme exemple, c'est aussi une requête get)

<?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

Si vous utilisez cette méthode pour envoyer une requête get, ajoutez simplement les paramètres à la fin de l'URL, tels que curl_setopt($ch, CURLOPT_URL, "http://localhost/tqj/ date/p822.php?name=yyyyy");

Exemple 2 : Utilisez curl pour envoyer une demande de publication

<?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);

Exemple 3 : débogage du processus curl et traitement des informations d'erreur

<?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);
?>

Utilisez curl_error() pour obtenir des informations d'erreur, et curl_getinfo() pour obtenir des informations relatives à l'exécution.

Exemple 4 : Téléchargez des photos et obtenez des informations de retour.

Téléchargez des images sur plusieurs domaines et obtenez des informations de retour en même temps. Cela peut être très utile. C'est similaire à post. Notez qu'un symbole @ est ajouté avant le fichier

<?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);

Exemple 5 : traitement par lots curl.

Curl possède une fonctionnalité avancée, des gestionnaires de lots. Permet d'ouvrir plusieurs liens curl.

Le traitement par lots consiste à ouvrir plusieurs handles curl, à attribuer ces handles à un handle de lot, puis à attendre la fin du traitement dans une boucle while. curl_multi_exec() peut être appelé traitement multithread, mais il appartient toujours à la catégorie asynchrone.

<?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);


?>

Répertorie essentiellement quelques exemples couramment utilisés. Si vous souhaitez utiliser curl de manière flexible, vous devez toujours vous familiariser avec les différents paramètres de curl. Ces paramètres sont l'âme de curl.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer