Maison  >  Article  >  développement back-end  >  A quoi sert curl sous php ?

A quoi sert curl sous php ?

coldplay.xixi
coldplay.xixioriginal
2020-07-21 11:40:322874parcourir

L'utilisation de curl sous PHP est la suivante : 1. Utiliser CURL pour envoyer une requête ; 2. Obtenir les informations de sortie de la requête CURL ; 3. Utiliser CURL pour envoyer une requête GET ; une requête POST.

A quoi sert curl sous php ?

L'utilisation de curl sous php est :

1. envoyer des requêtes

L'utilisation de l'extension PHP de CURL pour finaliser l'envoi d'une requête HTTP implique généralement les étapes suivantes :

1. Initialisez le handle de connexion

2. options ;

3. Exécuter et obtenir les résultats

4. Libérez le handle de connexion VURL.

Le fragment de programme suivant est un processus typique d'utilisation de CURL pour envoyer HTTP

// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"http://www.codetc.com");
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);

Quatre fonctions sont utilisées dans le code ci-dessus

curl_init() et curl_close() doivent initialiser CURL respectivement La connexion et la fermeture des connexions CURL sont relativement simples.

curl_exec()Exécuter la requête CURL. Si aucune erreur ne se produit, la fonction renvoie les données renvoyées par l'URL correspondante, indiquant la satisfaction sous forme de chaîne ; si une erreur se produit, la fonction renvoie FALSE. Il convient de noter que le signe égal est utilisé pour déterminer si la sortie est FALSE. Ceci permet de faire la distinction entre le retour d'une chaîne vide et une erreur.

La fonction la plus importante de la bibliothèque de fonctions CURL est curl_setopt(), qui permet de personnaliser les requêtes HTTP en définissant les options définies par la bibliothèque de fonctions CURL. Trois options importantes sont utilisées dans l'extrait de code ci-dessus :

  • CURLOPT_URL spécifie l'URL demandée

  • CURLOPT_RETURNTRANSFER est défini sur 1 pour indiquer une exécution ultérieure ; . Le retour de la fonction curl_exec est la chaîne de retour de l'URL, au lieu de diriger la chaîne de retour vers la sortie standard et de renvoyer TRUE

  • CURLLOPT_HEADER est défini sur 0 pour indiquer que non ; Les informations d'en-tête HTTP sont renvoyées.

Il existe de nombreuses options pour CURL, vous pouvez les consulter sur le site officiel de PHP (http://www.php.net/manual/en/function.curl-setopt.php ) Liste de toutes les options prises en charge par CURL.

2. Obtenez les informations de sortie de la requête CURL

Une fois la fonction curl_exec() exécutée, vous pouvez utiliser la fonction curl_getinfo() pour obtenir les informations pertinentes. sortie par la requête CURL, exemple de code Comme suit :

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

Dans le code ci-dessus, curl_getinfo renvoie un tableau associatif, contenant les données suivantes :

  • url : adresse réseau .

  • content_type : encodage du contenu.

  • http_code : code d'état HTTP.

  • header_size : La taille de l'en-tête.

  • request_size : La taille de la requête.

  • filetime : l'heure à laquelle le fichier a été créé.

  • ssl_verify_result : résultat de la vérification SSL.

  • redirect_count : nombre de sauts.

  • total_time : temps total pris.

  • namelookup_time : heure de la requête DNS.

  • connect_time : Temps passé à attendre la connexion.

  • pretransfer_time : Temps de préparation du pré-transfert.

  • size_uplpad : La taille des données téléchargées.

  • size_download : La taille des données téléchargées.

  • speed_download : Vitesse de téléchargement.

  • speed_upload : vitesse de téléchargement.

  • download_content_length : La longueur du contenu téléchargé.

  • upload_content_length : La longueur du contenu téléchargé.

  • starttransfer_time : Horaires de début du transfert.

  • redirect_time : heure de redirection.

curl_getinfo()La fonction a également un paramètre facultatif $opt, grâce auquel vous pouvez définir certaines constantes, correspondant au champ ci-dessus. Si le deuxième paramètre est défini, renvoyez uniquement le. informations spécifiées. Par exemple, si $opt est défini sur CURLINFO_TOTAL_TIME, la fonction curl_getinfo() ne renverra que total_time, qui est la durée totale de transmission. Lorsque vous n'avez besoin de prêter attention qu'à certaines informations de transmission, la définition du paramètre $opt est significative.

3. Utilisez CURL pour envoyer une requête GET

Comment utiliser CURL pour envoyer une requête GET La clé pour envoyer une requête GET est d'assembler une URL dans. le bon format. L'adresse de la requête et les données GET sont séparées par un "?", puis le nom et la valeur de la variable GET sont séparés par "=", et chaque nom et valeur GET sont connectés par "&". PHP nous fournit une fonction spécifiquement utilisée pour assembler la requête GET et les parties de données - http_build_query Cette fonction accepte un tableau associatif et renvoie la chaîne de requête GET décrite par les données associées. En utilisant cette fonction, combinée au processus général d'envoi de requêtes HTTP CURL, nous avons fermé une fonction qui envoie des requêtes GET - doCurlGetRequest Le code spécifique est le suivant :

/**
 *@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
 if($curl == "" || $timeout <= 0){
 return false;
 }
 $url = $url.&#39;?&#39;.http_bulid_query($data);
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
 return curl_exec($con);
}

4. Utilisez CURL pour envoyer. Requêtes POST

Vous pouvez utiliser l'option CURLOPT_POSTFIELDS fournie par CURL Définissez cette option sur les données de chaîne POST pour mettre la requête dans le corps. De même, nous avons implémenté une fonction pour envoyer une requête POST - doCurlPostRequest, le code est le suivant :

/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
 if($url == &#39;&#39; || $requestString == &#39;&#39; || $timeout <=0){
 return false;
 }
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
 curl_setopt($con, CURLOPT_POST,true);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
 return curl_exec($con); 
}

En plus de définir CURLOPT_POSTFIELDS dans le code ci-dessus, nous avons également défini CURL_POST为true pour identifier cette requête comme une requête POST. Les données GET peuvent également être transmises dans les requêtes POST. Il vous suffit d'assembler les données de la requête GET dans l'URL.

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn