1. الخطوات الأساسية لطلب حليقة:
(1) التهيئة
(2) تعيين الخيارات ، بما في ذلك عنوان URL
(3) تنفيذ محتوى مستند HTML واحصل عليه
(4) حرر مقبض الضفيرة
نسخة الكود كما يلي:
<؟ 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) ؛
صدى $ ch ؛
؟>
ملاحظة: الخطوة الثانية هي الأهم ، أي وظيفة curl_setopt ()
يمكننا إضافة عبارة للتحقق من وجود أخطاء. هنا يجب أن نولي اهتمامًا لاستخدام "=== false" ، وهو التمييز بين الإخراج الفارغ والقيمة المنطقية الخاطئة
نسخة الكود كما يلي:
$ output = curl_exec ($ ch) ؛
if ($ output === false) {
صدى "خطأ حرج:". curl_error ($ ch) ؛
}
تُرجع وظيفة curl_getinfo () معلومات حول هذا الطلب بعد تنفيذ حليقة ، وهو أمر مفيد لتصحيح الأخطاء واستكشاف الأخطاء وإصلاحها:
نسخة الكود كما يلي:
curl_exec ($ ch) ؛
$ info = curl_getinfo ($ ch) ؛
صدى '<pre>' ؛
print_r ($ info) ؛
صدى '</pre>' ؛
البيانات التي تم إرجاعها
نسخة الكود كما يلي:
صفيف
((
[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 ؛"> // حجم البيانات المطلوب </span>
[Speed_Download] => 85220
[speed_upload] => 0
[download_content_length] => 14658
[TOPLOAD_CONTENT_LENGTH] => 0
[StartTransfer_time] => 0.125
[redirect_time] => 0
[certinfo] => صفيف
((
)
[redirect_url] =>
)
2. هذه المعلومات مفيدة للغاية في تصحيح الأخطاء . على سبيل المثال ، عندما تزحف التجعيد ، قد تحدث بيانات الزحف في كثير من الأحيان لأسباب الشبكة ، ويمكننا حساب الملفات من خلال البيانات المكتسبة ، ثم قارنها بالبيانات التي تم الحصول عليها. إذا كانت الأحجام متساوية ، فسيتم تحديد أن التنزيل صحيح ، وإلا فإننا سنقوم بتجريص محاولات متكررة.
دعونا نلقي نظرة على مثال على الصور الزحف:
نسخة الكود كما يلي:
<؟ PHP
رأس ("نوع المحتوى: Image/PNG") ؛
// 1. التهيئة
$ ch = curl_init () ؛
// 2. تعيين الخيارات ، بما في ذلك عنوان URL
curl_setopt ($ ch ،، curlopt_url ، "http://img04.taobaocdn.com/tfscom/tb1omathxxxxajxvxxxxxxxxx.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 = filedize ("d: /aa.png") ؛
if ($ size! = $ info ['size_download']) {
صدى "البيانات التي تم تنزيلها غير مكتملة ، يرجى تنزيلها مرة أخرى" ؛
} آخر {
صدى "تنزيل بيانات كاملة" ؛
}
؟>
3. إرسال البيانات باستخدام طريقة البريد في حليقة
نسخة الكود كما يلي:
<؟ PHP
$ ch = curl_init () ؛
$ data = array ('name' => 'Kelly' ، 'Age' => 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) ؛
صدى $ res ؛
؟>
يمكن لهذه الطريقة محاكاة الرسائل ، أو يمكنك الجلوس على روبوت سقي ، والأفكار متشابهة
4. تحميل الملفات مع حليقة
نسخة الكود كما يلي:
<؟ PHP
// طلب البيانات التي تم تحميلها
$ 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) ؛
صدى $ res ؛
؟>
ملاحظة: عند إرسال ملف ، بادئة @ قبل اسم الملف واستخدم المسار الكامل
5. عنصر إعدادات الضفيرة
في الواقع ، يحتوي Curl على العديد من خيارات التكوين ، وهذه الخيارات هي روح الضفيرة. إعداده من خلال setOpt () ، يلخص ما يلي العديد من عناصر التكوين الشائعة والهامة. آمل أن يكون بعض المساعدة للقراء عند استخدام حليقة في المستقبل:
curlopt_autoreferer: عند إعادة التوجيه وفقًا للموقع: ، المرجع: يتم تعيين المعلومات في الرأس تلقائيًا.
Curlopt_Cookiesession: عند تمكينه ، سيقوم Curl بتمرير SessionCookie بإحكام ، وتجاهل ملفات تعريف الارتباط الأخرى
Curlopt_header: إخراج معلومات ملف الرأس كدفق بيانات
curlopt_infilesize: اضبط حجم الملف الذي تم تحميله ، بالبايت
curlopt_maxconnects: الحد الأقصى لعدد الاتصالات المسموح به
curlopt_maxredirs: حدد الحد الأقصى لعدد HTTP لإعادة التوجيه
Curlopt_Cookie: اضبط محتوى "ملف تعريف الارتباط:" جزء من طلب HTTP. وتتبع ملفات تعريف الارتباط المتعددة فاصلة فاصلة ، ويتم إضافة مساحة إلى Semicolon.
Curlopt_postfields: يتم إرسال جميع البيانات باستخدام عملية "post" في بروتوكول HTTP لإرسال الملف ليتم إرساله ، ويتم تسبق اسم الملف بواسطة البادئة @ ويتم استخدام المسار الكامل.
.........
لمزيد من عناصر التكوين ، يرجى الرجوع إلى دليل PHP
حليقة قوية للغاية ، إنها مكتبة عامة ، ليست فريدة من نوعها لـ PHP.
آمل أن يتمكن القراء من الحصول على شيء من خلال تعلم العديد من أمثلة الضفيرة الكلاسيكية في منشور المدونة هذا.