1. ขั้นตอนพื้นฐานของการร้องขอ CURL:
(1) การเริ่มต้น
(2) ตั้งค่าตัวเลือกรวมถึง URL
(3) ดำเนินการและรับเนื้อหาเอกสาร HTML
(4) ปล่อยที่จับ curl
การคัดลอกรหัสมีดังนี้:
<? php
// 1. การเริ่มต้น
$ CH = CURL_INIT ();
// 2. ตั้งค่าตัวเลือกรวมถึง URL
curl_setopt ($ ch, curlopt_url, "http://www.cnblogs.com/it-cen/");
// ส่งคืนข้อมูลที่ได้รับโดย curl_exec () เป็นสตรีมไฟล์แทนการส่งออกโดยตรง
curl_setopt ($ ch, curlopt_returntransfer, 1);
// เมื่อเริ่มต้นข้อมูลไฟล์ส่วนหัวจะถูกส่งออกเป็นสตรีมข้อมูล
curl_setopt ($ ch, curlopt_header, 1);
// 3. ดำเนินการและรับเนื้อหาเอกสาร HTML
curl_exec ($ ch);
// 4. ปล่อยที่จับ
curl_close ($ ch);
Echo $ ch;
-
หมายเหตุ: ขั้นตอนที่สองเป็นสิ่งสำคัญที่สุดนั่นคือฟังก์ชัน curl_setopt ()
เราสามารถเพิ่มคำสั่งเพื่อตรวจสอบข้อผิดพลาด ที่นี่เราควรให้ความสนใจกับการใช้ "=== false" ซึ่งคือการแยกแยะระหว่างเอาต์พุตว่างเปล่าและค่าบูลีนเท็จเท็จ
การคัดลอกรหัสมีดังนี้:
$ output = curl_exec ($ ch);
ถ้า ($ output === False) {
echo "ข้อผิดพลาด curl:". curl_error ($ ch);
-
ฟังก์ชั่น CURL_GETINFO () ส่งคืนข้อมูลเกี่ยวกับคำขอนี้หลังจากดำเนินการ CURL ซึ่งมีประโยชน์สำหรับการดีบักและการแก้ไขปัญหา:
การคัดลอกรหัสมีดังนี้:
curl_exec ($ ch);
$ info = curl_getinfo ($ ch);
Echo '<pre>';
print_r ($ ข้อมูล);
echo '</pre>';
ข้อมูลที่ส่งคืน
การคัดลอกรหัสมีดังนี้:
อาร์เรย์
-
[url] => http://www.cnblogs.com/it-cen/
[content_type] => ข้อความ/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;"> // ขนาดข้อมูลที่ร้องขอ </span>
[speed_download] => 85220
[speed_upload] => 0
[download_content_length] => 14658
[upload_content_length] => 0
[startTransfer_time] => 0.125
[redirect_time] => 0
[certinfo] => อาร์เรย์
-
-
[redirect_url] =>
-
2. ข้อมูลนี้มีประโยชน์มากในการดีบัก ตัวอย่างเช่นเมื่อ Curl Crawling ข้อมูลการรวบรวมข้อมูลอาจเกิดขึ้นได้เนื่องจากเหตุผลของเครือข่ายและเราสามารถคำนวณขนาดไฟล์ผ่านข้อมูลที่ได้รับจากนั้นเปรียบเทียบกับข้อมูลที่ได้รับ หากขนาดเท่ากันก็จะพิจารณาว่าการดาวน์โหลดนั้นถูกต้องมิฉะนั้นเราจะพยายามทำซ้ำ
ลองมาดูตัวอย่างของภาพคลาน:
การคัดลอกรหัสมีดังนี้:
<? php
ส่วนหัว ("เนื้อหาประเภท: image/png");
// 1. การเริ่มต้น
$ CH = CURL_INIT ();
// 2. ตั้งค่าตัวเลือกรวมถึง URL
curl_setopt ($ ch ,, curlopt_url, "http://img04.taobaocdn.com/tfscom/tb1athxxxxxxajxvxxxxbfxxx.png");
curl_setopt ($ ch, curlopt_returntransfer, 1);
curl_setopt ($ ch, curlopt_header, 1);
// 3. ดำเนินการและรับเนื้อหา
$ res = curl_exec ($ ch);
// รับข้อมูล
$ info = curl_getinfo ($ ch);
// 4. ปล่อยทรัพยากร
curl_close ($ ch);
file_put_contents ("d: /aa.png", $ res);
$ size = filesize ("d: /aa.png");
if ($ size! = $ info ['size_download']) {
echo "ข้อมูลที่ดาวน์โหลดไม่สมบูรณ์โปรดดาวน์โหลดอีกครั้ง";
} อื่น {
echo "ดาวน์โหลด Data Complete";
-
-
3. ส่งข้อมูลโดยใช้วิธีการโพสต์ในม้วน
การคัดลอกรหัสมีดังนี้:
<? php
$ CH = CURL_INIT ();
$ data = array ('name' => 'Kelly', 'อายุ' => 27, 'sex' => 1);
curl_setopt ($ ch, curlopt_url, "http: //localhost.post.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;
-
วิธีนี้สามารถจำลองข้อความหรือคุณสามารถนั่งบนหุ่นยนต์รดน้ำและความคิดก็เหมือนกัน
4. อัปโหลดไฟล์ด้วย curl
การคัดลอกรหัสมีดังนี้:
<? php
// คำขอข้อมูลที่อัปโหลด
$ data = array ('ชื่อ' => 'ความงาม', "อัปโหลด" => "@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;
-
หมายเหตุ: เมื่อส่งไฟล์คำนำหน้า @ ก่อนชื่อไฟล์และใช้พา ธ แบบเต็ม
5. รายการการตั้งค่าม้วนงอ
ในความเป็นจริง Curl มีตัวเลือกการกำหนดค่ามากมายและตัวเลือกเหล่านี้คือจิตวิญญาณของ Curl การตั้งค่าผ่าน setOpt () ต่อไปนี้สรุปรายการการกำหนดค่าทั่วไปและสำคัญหลายรายการ ฉันหวังว่ามันจะช่วยผู้อ่านเมื่อใช้ Curl ในอนาคต:
CURLOPT_AUTOREFERER: เมื่อเปลี่ยนเส้นทางตามตำแหน่ง: ผู้อ้างอิง: ข้อมูลในส่วนหัวจะถูกตั้งค่าโดยอัตโนมัติ
curlopt_cookiesession: เมื่อเปิดใช้งาน Curl จะผ่านเซสชัน cookie อย่างแน่นหนาโดยไม่สนใจคุกกี้อื่น ๆ
curlopt_header: เอาต์พุตข้อมูลไฟล์ส่วนหัวเป็นสตรีมข้อมูล
curlopt_infilesize: ตั้งค่าขนาดของไฟล์ที่อัปโหลดเป็นไบต์
curlopt_maxconnects: จำนวนสูงสุดของการเชื่อมต่อที่อนุญาต
curlopt_maxredirs: ระบุจำนวนสูงสุดของการเปลี่ยนเส้นทาง HTTP
CURLOPT_COOKIE: ตั้งค่าเนื้อหาของ "คุกกี้:" ส่วนหนึ่งของคำขอ HTTP คุกกี้หลายตัวตามด้วยเครื่องหมายอัฒภาคและมีการเพิ่มพื้นที่ลงในเครื่องหมายอัฒภาค
CURLOPT_POSTFIELDS: ข้อมูลทั้งหมดถูกส่งโดยใช้การดำเนินการ "โพสต์" ในโปรโตคอล HTTP เพื่อส่งไฟล์ที่จะส่งและชื่อไฟล์จะถูกนำหน้าด้วยคำนำหน้า @ และใช้เส้นทางเต็ม
-
สำหรับรายการการกำหนดค่าเพิ่มเติมโปรดดูคู่มือ PHP
Curl นั้นทรงพลังมากเป็นห้องสมุดทั่วไปไม่ซ้ำกับ PHP
ฉันหวังว่าผู้อ่านจะได้รับบางสิ่งบางอย่างผ่านการเรียนรู้ตัวอย่างม้วนแบบคลาสสิกหลายอย่างในโพสต์บล็อกนี้