ခေါင်းစီးလိုင်းများကို တုံ့ပြန်မှု ကိုယ်ထည်နှင့် သီးခြား စုဆောင်းပါ။ proxy မှတစ်ဆင့် လွှဲပြောင်းမှုသည် CONNECT၊ အတည်ပြုခြင်း၊ ပြန်ညွှန်ခြင်းနှင့် ဦးတည်ရာ တုံ့ပြန်မှု ခေါင်းစီးများကို တစ်ကြိမ်တည်း ပို့ပေးနိုင်သည်။

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

ဤ callback သည် မူရင်းလိုင်း အစဉ်ကို ထိန်းထားပြီး လက်ခံသော byte အရေအတွက်ကို ပြန်ပေးသည်။ လိုင်းအပြည့်များကို လက်ခံသည်၊ သို့သော် ၎င်းတို့ကို တုံ့ပြန်မှုများအဖြစ် အုပ်စုမဖွဲ့ရသေးဘဲ နောက်ဆုံး ဝဘ်ဆိုက် ခေါင်းစီးများကို မရွေးချယ်သေးပါ။

အစဉ်ကို ဘလောက်များအဖြစ် အနက်ဖွင့်ပါ

HTTP အခြေအနေ လိုင်းတစ်ခုက တုံ့ပြန်မှု ဘလောက်ကို စတင်ပြီး လိုင်းအလွတ်က ၎င်း၏ ခေါင်းစီးများကို အဆုံးသတ်သည်။ နောက်ဆုံး ဦးတည်ရာ တုံ့ပြန်မှုကို မရွေးချယ်မီ ထိုနယ်နိမိတ်များကို ထိန်းသိမ်းပါ။ အလယ်အလတ် အတည်ပြုရေး ကြိုးပမ်းမှုများနှင့် ပြန်ညွှန်မှုများက ဘလောက်များ ထပ်တိုးနိုင်သည်။

Trailer များသည် နောက်ပိုင်းတွင် callback မှတစ်ဆင့် ရောက်လာနိုင်သည်။ နောက်ပိုင်း အကွက်တိုင်းကို ပထမ တုံ့ပြန်မှုတွင် ချိတ်ဆွဲမည့်အစား ၎င်းတို့ကို ကနဦး ခေါင်းစီးများနှင့် ခွဲခြားရန် လုံလောက်သော parser အခြေအနေကို ထိန်းထားပါ။

ဥမင်လိုဏ်ခေါင်း အထောက်အထားကို ထိန်းထားပါ သို့မဟုတ် ဖိနှိပ်ပါ

HTTPS ဥမင်၏ CONNECT အခြေအနေအတွက် CURLINFO_HTTP_CONNECTCODE ကို သီးခြား ဖတ်ပါ။ လက်ခံထားသော ဥမင်သည် ဝဘ်ဆိုက်၏ အောင်မြင်သော တုံ့ပြန်မှုကို သက်သေမပြပါ။

စုဆောင်းသူအတွက် CONNECT ခေါင်းစီးများ မလိုအပ်ပါက CURLOPT_SUPPRESS_CONNECT_HEADERS သည် ၎င်းတို့ကို သတ်မှတ်ထားသော ခေါင်းစီး ထွက်ပေါက်နှင့် callback လမ်းကြောင်းများသို့ ပို့ဆောင်မှုကို ထိန်းချုပ်သည်။ ချိတ်ဆက်ထားသော libcurl နှင့် PHP တည်ဆောက်မှုတွင် ပံ့ပိုးမှုကို စစ်ဆေးပါ။ ဖိနှိပ်ခြင်းက စုဆောင်းမှုကို ရိုးရှင်းစေသော်လည်း ရောဂါရှာဖွေရာတွင် အထောက်အကူဖြစ်နိုင်သည့် ခေါင်းစီးအဆင့် ဥမင် အထောက်အထားကို ဖယ်ရှားသည်။

ကိုယ်ထည်ကို ပုံသေ offset ဖြင့် သို့မဟုတ် HTML tag ရှာခြင်းဖြင့် ပြန်မယူပါနှင့်။ ခေါင်းစီး အရွယ်အစားများ ကွဲပြားသည်၊ အလယ်အလတ် တုံ့ပြန်မှုများ မတူညီကြဘဲ ကိုယ်ထည်သည် ဒွိစုံ သို့မဟုတ် အလွတ် ဖြစ်နိုင်သည်။ ရှေးဟောင်း ထုတ်ဝေမှု-သီးသန့် bug အစီရင်ခံစာသည် ခန့်မှန်းထားသော offset ကို အကြောင်းပြခြင်း မဟုတ်ပါ။

ကိုယ်ထည် ကိုင်တွယ်မှုကို သီးခြားထားပြီး စုဆောင်းမှု သို့မဟုတ် ခွဲခြမ်းစိတ်ဖြာမှု မအောင်မြင်ပါက လွှဲပြောင်းမှု အမှားကို လေ့လာတွေ့ရှိသော တုံ့ပြန်မှု အဆင့်များနှင့်အတူ ထိန်းထားပါ။ ၎င်းသည် ပြတ်တောက်သော callback၊ ပုံပျက်သော အပလီကေးရှင်း ဒေတာနှင့် ပယ်ချခံရသော proxy လဲလှယ်မှုကို ခွဲခြားပေးသည်။

ဆက်စပ်ဆောင်းပါးများ