เก็บบรรทัดส่วนหัวแยกจากเนื้อหาการตอบกลับ การถ่ายโอนผ่านพร็อกซีอาจส่งส่วนหัว CONNECT การยืนยันตัวตน การเปลี่ยนเส้นทาง และการตอบกลับของปลายทางในการดำเนินการเดียว:

$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
    function ($handle, $line) use (&$headerLines) {
        $headerLines[] = $line;
        return strlen($line);
    }
);

คอลแบ็กนี้เก็บลำดับบรรทัดดิบและคืนจำนวนไบต์ที่ยอมรับ ได้รับบรรทัดที่สมบูรณ์ แต่ยังไม่ได้จัดกลุ่มเป็นคำตอบหรือเลือกส่วนหัวของเว็บไซต์สุดท้าย

ตีความลำดับเป็นบล็อก

บรรทัดสถานะ HTTP เริ่มบล็อกคำตอบ และบรรทัดว่างสิ้นสุดส่วนหัวของบล็อกนั้น รักษาขอบเขตเหล่านี้ก่อนเลือกคำตอบปลายทางสุดท้าย การพยายามยืนยันตัวตนระหว่างทางและการเปลี่ยนเส้นทางอาจเพิ่มบล็อกได้แต่ละครั้ง

เทรลเลอร์อาจมาถึงภายหลังผ่านคอลแบ็ก เก็บสถานะตัวแยกวิเคราะห์ให้พอเพื่อแยกออกจากส่วนหัวเริ่มต้น แทนที่จะแนบทุกฟิลด์ภายหลังเข้ากับคำตอบแรก

เก็บหรือระงับหลักฐานของอุโมงค์

อ่าน CURLINFO_HTTP_CONNECTCODE แยกต่างหากสำหรับสถานะ CONNECT ของอุโมงค์ HTTPS อุโมงค์ที่ยอมรับไม่ได้พิสูจน์การตอบกลับที่สำเร็จของเว็บไซต์

หากผู้เก็บไม่ต้องการส่วนหัว CONNECT CURLOPT_SUPPRESS_CONNECT_HEADERS ควบคุมการส่งไปยังเอาต์พุตส่วนหัวที่กำหนดค่าและเส้นทางคอลแบ็ก ตรวจสอบการสนับสนุนใน libcurl และบิลด์ PHP ที่เชื่อมโยง การระงับทำให้การเก็บง่ายขึ้นแต่ลบหลักฐานอุโมงค์ระดับส่วนหัวที่ช่วยในการวินิจฉัย

อย่ากู้คืนเนื้อหาโดยใช้ระยะออฟเซ็ตคงที่หรือค้นหาแท็ก HTML ขนาดส่วนหัวแตกต่างกัน คำตอบระหว่างทางต่างกัน และเนื้อหาอาจเป็นไบนารีหรือว่างเปล่า รายงานข้อบกพร่องเก่าที่เฉพาะเจาะจงรุ่นไม่ใช่เหตุผลของออฟเซ็ตที่เดา

แยกการจัดการเนื้อหาไว้ และเก็บข้อผิดพลาดการถ่ายโอนพร้อมขั้นตอนการตอบกลับที่สังเกตได้หากการเก็บหรือการแยกวิเคราะห์ล้มเหลว สิ่งนี้แยกแยะคอลแบ็กที่ถูกตัด ข้อมูลแอปพลิเคชันที่ผิดรูป และการแลกเปลี่ยนพร็อกซีที่ถูกปฏิเสธ

บทความที่เกี่ยวข้อง