1. grundlegende Schritte der Curl -Anfrage:
(1) Initialisierung
(2) Setzen Sie Optionen einschließlich URL
(3) HTML -Dokumentinhalte ausführen und erhalten
(4) Lösen Sie den Curl -Griff
Die Codekopie lautet wie folgt:
<? Php
// 1. Initialisierung
$ ch = curl_init ();
// 2. Stellen Sie Optionen einschließlich URL fest
curl_setopt ($ ch, curlopt_url, "http://www.cnblogs.com/it-cen/");
// Geben Sie die von curl_exec () erhaltenen Informationen als Dateistrom zurück, anstatt sie direkt auszugeben
curl_setopt ($ ch, curlopt_returntransfer, 1);
// Zu Beginn werden die Header -Dateiinformationen als Datenstrom ausgegeben
curl_setopt ($ ch, curlopt_header, 1);
// 3. Führen Sie HTML -Dokumentinhalte aus und erhalten Sie Inhalte
curl_exec ($ ch);
// 4. Lösen Sie den Griff
curl_close ($ ch);
echo $ ch;
?>
Hinweis: Der zweite Schritt ist der wichtigste, dh die Funktion curl_setopt ()
Wir können eine Erklärung hinzufügen, um auf Fehler zu suchen. Hier sollten wir darauf achten, "=== false" zu verwenden, das zwischen leerer Ausgabe und Boolescher Wert Falsch unterscheidet
Die Codekopie lautet wie folgt:
$ output = curl_exec ($ ch);
if ($ output === false) {
Echo "Curl -Fehler:". curl_error ($ ch);
}
Die Funktion curl_getInfo () gibt Informationen zu dieser Anfrage nach der Ausführung von Curl zurück, was zum Debuggen und Fehlerbehebung nützlich ist:
Die Codekopie lautet wie folgt:
curl_exec ($ ch);
$ info = curl_getInfo ($ ch);
echo '<pre>';
print_r ($ info);
echo '</pre>';
Daten zurückgegeben
Die Codekopie lautet wie folgt:
Array
(
[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
[presransfer_time] => 0.063
[size_upload] => 0
[size_download] => 14658 <span style = "color: #ff0000;"> // angeforderte Datengröße </span>
[Speed_download] => 85220
[Speed_Upload] => 0
[download_content_length] => 14658
[upload_content_length] => 0
[starttransfer_time] => 0.125
[redirect_time] => 0
[certinfo] => Array
(
)
[redirect_url] =>
)
2. Diese Informationen sind sehr nützlich beim Debuggen . Zum Beispiel können beim Crowll -Crawling häufig die Krabbeldaten aus Netzwerkgründen auftreten, und wir können die Dateigröße über die erfassten Daten berechnen und sie dann mit den erhaltenen Daten vergleichen. Wenn die Größen gleich sind, wird festgestellt, dass der Download korrekt ist, andernfalls werden wir wiederholte Versuche unternehmen.
Schauen wir uns ein Beispiel für kriechende Bilder an:
Die Codekopie lautet wie folgt:
<? Php
Header ("Inhaltstyp: Bild/PNG");
// 1. Initialisierung
$ ch = curl_init ();
// 2. Stellen Sie Optionen einschließlich URL fest
curl_setopt ($ ch,, curlopt_url, "http://img04.taobaocdn.com/tfscom/tb1omathxxxxajxvxxtkxbfxxx.png");
curl_setopt ($ ch, curlopt_returntransfer, 1);
curl_setopt ($ ch, curlopt_header, 1);
// 3. Inhalte ausführen und holen
$ res = curl_exec ($ ch);
// Informationen erhalten
$ info = curl_getInfo ($ ch);
// 4. Ressourcen freigeben
curl_close ($ ch);
Datei_put_Contents ("d: /aa.png", $ res);
$ size = filesize ("d: /aa.png");
if ($ size! = $ info ['size_download']) {
echo "Die heruntergeladenen Daten sind unvollständig, bitte laden Sie sie noch einmal herunter".
} anders {
echo "Daten herunterladen";
}
?>
3. Senden Sie Daten mithilfe der Post -Methode in curl
Die Codekopie lautet wie folgt:
<? Php
$ ch = curl_init ();
$ data = array ('name' => 'kelly', 'ay' => 27, 'sex' => 1);
curl_setopt ($ ch, curlopt_url, "http: //localhost.post.php");
curl_setopt ($ ch, curlopt_returntransfer, 1);
// als Post festlegen
curl_setopt ($ ch, curlopt_post, 1);
// Fügen Sie die Postvariable hinzu
curl_setopt ($ ch, curlopt_postfields, $ data);
$ res = curl_exec ($ ch);
curl_close ($ ch);
echo $ res;
?>
Diese Methode kann Nachrichten simulieren, oder Sie können auf einem Bewässerungsroboter sitzen, und die Ideen sind gleich
4. Laden Sie Dateien mit Curl hoch hoch
Die Codekopie lautet wie folgt:
<? Php
// Anfrage nach hochgeladenen Daten
$ data = array ('name' => 'Beauty', "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;
?>
HINWEIS: Beim Senden einer Datei den @ vor dem Dateinamen Präfix und verwenden Sie den vollständigen Pfad
5. Elleinstellungselement
Tatsächlich hat Curl viele Konfigurationsoptionen, und diese Optionen sind die Seele von Curl. Wenn Sie es durch setopt () einstellen, fasst im Folgenden mehrere gemeinsame und wichtige Konfigurationselemente zusammen. Ich hoffe, es wird für die Leser helfen, wenn es in Zukunft Curl verwendet:
Curlopt_autoReferer: Beim Umleiten gemäß Ort:, Der Referer: Informationen im Header werden automatisch festgelegt.
Curlopt_cookieSession: Wenn es aktiviert ist
Curlopt_Header: Ausgabe der Header -Dateiinformationen als Datenstrom ausgeben
Curlopt_infileSize: Stellen Sie die Größe der hochgeladenen Datei in Bytes fest
Curlopt_maxconnects: maximale Anzahl der zulässigen Verbindungen
Curlopt_maxredirs: Geben Sie die maximale Anzahl von HTTP -Umleitungen an
Curlopt_cookie: Setzen Sie den Inhalt des "Cookie:" -Teils der HTTP -Anfrage. Auf mehrere Kekse folgt ein Semikolon, und dem Semikolon wird ein Platz hinzugefügt.
CURLOPT_POSTFIELDS: Alle Daten werden mit der Operation "Post" im HTTP -Protokoll gesendet, um die zugesandte Datei zu senden, und der Dateiname wird vom @ Präfix vorangestellt und der vollständige Pfad wird verwendet.
.........
Weitere Konfigurationselemente finden Sie im PHP -Handbuch
Curl ist sehr mächtig, es ist eine allgemeine Bibliothek, die nicht nur für PHP einzigartig ist.
Ich hoffe, dass die Leser etwas gewinnen können, indem sie mehrere klassische Curl -Beispiele in diesem Blog -Beitrag lernen.