1. Étapes de base de la demande de boucle:
(1) initialisation
(2) Définir les options, y compris l'URL
(3) Exécuter et obtenir du contenu de document HTML
(4) Libérer la poignée de boucle
La copie de code est la suivante:
<? Php
// 1. Initialisation
$ ch = curl_init ();
// 2. Définir les options, y compris l'URL
curl_setopt ($ ch, curlopt_url, "http://www.cnblogs.com/it-cen/");
// Renvoie les informations obtenues par curl_exec () en tant que flux de fichiers au lieu de les diffuser directement
curl_setopt ($ ch, curlopt_returntransfer, 1);
// Au début, les informations sur le fichier d'en-tête seront sorties en tant que flux de données
curl_setopt ($ ch, curlopt_header, 1);
// 3. Exécuter et obtenir du contenu de document HTML
curl_exec ($ ch);
// 4. Libérez la poignée
curl_close ($ ch);
Echo $ ch;
?>
Remarque: la deuxième étape est la plus importante, c'est-à-dire la fonction curl_setopt ()
Nous pouvons ajouter une instruction pour vérifier les erreurs. Ici, nous devons prêter attention à l'utilisation de "=== false", qui doit faire la distinction entre la sortie vide et la valeur booléenne fausse
La copie de code est la suivante:
$ output = curl_exec ($ ch);
if ($ output === false) {
Echo "Erreur de curl:". Curl_error ($ ch);
}
La fonction curl_getInfo () renvoie des informations sur cette demande après l'exécution de Curl, ce qui est utile pour le débogage et le dépannage:
La copie de code est la suivante:
curl_exec ($ ch);
$ info = curl_getInfo ($ ch);
Echo '<pré>';
print_r ($ info);
echo '</pre>';
Données retournées
La copie de code est la suivante:
Tableau
(
[url] => http://www.cnblogs.com/it-cen/
[content_type] => text / html; Charset = UTF-8
[http_code] => 200
[header_size] => 312
[request_size] => 61
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0,172
[namelookup_time] => 0,016
[connect_time] => 0,063
[pretransfer_time] => 0,063
[size_upload] => 0
[size_download] => 14658 <span style = "Color: # ff0000;"> // Taille des données demandée </span>
[speed_download] => 85220
[Speed_upload] => 0
[téléchargement_content_length] => 14658
[upload_content_length] => 0
[startTransfer_time] => 0,125
[redirect_time] => 0
[Certinfo] => Array
(
)
[redirect_url] =>
)
2. Ces informations sont très utiles dans le débogage . Par exemple, lors de la curl rampant, les données rampantes peuvent souvent se produire pour des raisons de réseau, et nous pouvons calculer la taille des fichiers via les données acquises, puis les comparer avec les données obtenues. Si les tailles sont égales, il est déterminé que le téléchargement est correct, sinon nous ferons des tentatives répétées.
Jetons un coup d'œil à un exemple d'images rampantes:
La copie de code est la suivante:
<? Php
en-tête ("contenu-type: image / png");
// 1. Initialisation
$ ch = curl_init ();
// 2. Définir les options, y compris l'URL
curl_setopt ($ ch ,, curlopt_url, "http://img04.taobaocdn.com/tfscom/tb1omathxxxxajxvxxxkxbfxxx.png");
curl_setopt ($ ch, curlopt_returntransfer, 1);
curl_setopt ($ ch, curlopt_header, 1);
// 3. Exécuter et obtenir du contenu
$ res = curl_exec ($ ch);
// obtenir des informations
$ info = curl_getInfo ($ ch);
// 4. Libérer des ressources
curl_close ($ ch);
file_put_contents ("d: /aa.png", $ res);
$ size = fileSize ("d: /aa.png");
if ($ size! = $ info ['size_download']) {
Echo "Les données téléchargées sont incomplètes, veuillez les télécharger à nouveau";
} autre {
Echo "Télécharger les données complètes";
}
?>
3. Envoyer des données à l'aide de la méthode post-couronne
La copie de code est la suivante:
<? Php
$ ch = curl_init ();
$ data = array ('name' => 'kelly', 'age' => 27, 'sexe' => 1);
curl_setopt ($ ch, curlopt_url, "http: //localhost.post.php");
curl_setopt ($ ch, curlopt_returntransfer, 1);
// Définir le poste
curl_setopt ($ ch, curlopt_post, 1);
// Ajouter la variable post
curl_setopt ($ ch, curlopt_postfields, $ data);
$ res = curl_exec ($ ch);
curl_close ($ ch);
Echo $ res;
?>
Cette méthode peut simuler des messages, ou vous pouvez vous asseoir sur un robot d'arrosage, et les idées sont les mêmes
4. Télécharger des fichiers avec Curl
La copie de code est la suivante:
<? Php
// demande de données téléchargées
$ data = array ('name' => 'beauté', "upload" => "@ a.zip");
$ ch = curl_init ();
curl_setopt ($ ch, curlopt_url, "http://127.0.0.1/socket/upload_file.php");
curl_setopt ($ ch, curlopt_returntransfer, 1);
curl_setopt ($ ch, curlopt_post, 1);
curl_setopt ($ ch, curlopt_postfields, $ data);
$ res = curl_exec ($ ch);
curl_close ($ ch);
Echo $ res;
?>
Remarque: Lors de l'envoi d'un fichier, préfixez le @ avant le nom du fichier et utilisez le chemin complet
5. Élément de paramètres en boucle
En fait, Curl a de nombreuses options de configuration, et ces options sont l'âme de Curl. Le réglant via SetOPT (), le suivant résume plusieurs éléments de configuration communs et importants. J'espère que cela sera d'une aide aux lecteurs lors de l'utilisation de Curl à l'avenir:
Curlopt_autoreferer: Lors de la redirection en fonction de l'emplacement:, le référence: les informations dans l'en-tête sont automatiquement définies.
Curlopt_cookiesession: Lorsqu'il est activé, Curl passera une session cookie étroitement, ignorant d'autres cookies
Curlopt_header: Sortez les informations du fichier d'en-tête comme flux de données
Curlopt_infilesize: définissez la taille du fichier téléchargé, en octets
Curlopt_maxconnects: nombre maximum de connexions autorisées
Curlopt_maxredirs: spécifiez le nombre maximum de redirectes HTTP
Curlopt_cookie: définissez le contenu du "Cookie:" partie de la demande HTTP. Plusieurs cookies sont suivis d'un point-virgule et un espace est ajouté au demi-colon.
Curlopt_postFields: toutes les données sont envoyées à l'aide de l'opération "Post" dans le protocole HTTP pour envoyer le fichier à envoyer, et le nom de fichier est préfixé par le @ prefix et le chemin complet est utilisé.
.........
Pour plus d'éléments de configuration, veuillez vous référer au manuel PHP
Curl est très puissant, c'est une bibliothèque générale, non propre à PHP.
J'espère que les lecteurs pourront gagner quelque chose en apprenant plusieurs exemples de curl classiques dans cet article de blog.