Guzzle ၏ cURL handler- ပရောက်စီ CONNECT ခေါင်းစီးများကို ဖမ်းယူခြင်း
ပရောက်စီ၏ CONNECT တုံ့ပြန်ချက်နှင့် ဝဘ်ဆိုက်၏ တုံ့ပြန်ချက် နှစ်ခုလုံး အရေးကြီးသောအခါ Guzzle ၏ cURL handler ဖြင့် သီးခြား တုံ့ပြန်ချက် ခေါင်းစီး ဘလောက်များကို ဖမ်းယူပါ။
HTTP ပရောက်စီမှတစ်ဆင့် HTTPS တောင်းဆိုမှုတစ်ခုသည် CONNECT လက်ခံသော တုံ့ပြန်ချက်တစ်ခုနှင့် ထိုထဲရှိ ဥမင်အတွင်းမှ ဝဘ်ဆိုက်၏ နောက်ပိုင်း တုံ့ပြန်ချက်ကို ရရှိနိုင်သည်။ ကနဦး လမ်းကြောင်း သတ်မှတ်ခြင်းအတွက် Guzzle ၏ တောင်းဆိုမှုတစ်ခုချင်း ပရောက်စီ ရွေးချယ်မှုကို ကြည့်ပါ။ ပထမ တုံ့ပြန်ချက်ရှိ ခေါင်းစီးတစ်ခုသည် နောက်ဆုံး တုံ့ပြန်ချက် အရာဝတ္ထုတွင် ရှိနေရန် မလိုအပ်ပါ။
သင်ကိုယ်တိုင် ရွေးချယ်သော HTTP အဆုံးမှတ်ဖြင့် ပြန်လည်ဖန်တီးရန် HTTP ပရောက်စီ စာရင်းမှ ကိုယ်စားလှယ်တစ်ခုကို ယူပြီး ၎င်းသည် HTTPS ဥမင်ကို လက်ခံကြောင်း အတည်ပြုပါ။ Guzzle 7.10 ၏ cURL- handler လမ်းကြောင်းတွင် ခေါင်းစီး ကော်လ်ဘက်တစ်ခုစီကို သီးခြား ဘလောက်အဖြစ် သိမ်းဆည်းပါ-
$blocks = [];
$client = new \GuzzleHttp\Client([
'handler' => \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
),
]);
$response = $client->get('https://www.example.com/', [
'proxy' => 'http://proxy.example:8080',
'curl' => [CURLOPT_SUPPRESS_CONNECT_HEADERS => false],
'on_headers' => function (
\Psr\Http\Message\ResponseInterface $part
) use (&$blocks) {
$blocks[] = [
'status' => $part->getStatusCode(),
'reason' => $part->getReasonPhrase(),
'headers' => $part->getHeaders(),
];
},
]);
cURL extension သည် libcurl 7.54.0 က မိတ်ဆက်ခဲ့သော CURLOPT_SUPPRESS_CONNECT_HEADERS ရွေးချယ်မှုကို ဖော်ထုတ်ရမည်။ ၎င်းကို false သတ်မှတ်ခြင်းဖြင့် CONNECT ခေါင်းစီးများသည် cURL ၏ ခေါင်းစီး ကော်လ်ဘက်သို့ ရောက်ရှိသည်။ Guzzle 7.10 handler သည် ပြီးစီးသော ခေါင်းစီး ဘလောက်တစ်ခုစီအတွက် တုံ့ပြန်ချက်ကို တည်ဆောက်ပြီး ထို နယ်နိမိတ်တွင် on_headers ကို ခေါ်သည်။
ဘလောက်များကို အစဉ်လိုက် ထားရှိပါ။ အတည်ပြုခြင်း စိန်ခေါ်မှုများ၊ ပြန်ညွှန်းမှုများနှင့် သတင်းအချက်အလက် တုံ့ပြန်ချက်များသည် နောက်ထပ် ဘလောက်များ ဖြစ်ပေါ်စေနိုင်သည်။ တန်ဖိုးအားလုံးကို array တစ်ခုတည်းအဖြစ် မပြားစေပါနှင့်၊ အခြေအနေ 200 ဖြစ်သောကြောင့်သာ တုံ့ပြန်ချက်ကို အမျိုးအစားခွဲခြားခြင်း မပြုပါနှင့်။
ပြန်ပေးသော တုံ့ပြန်ချက်သည် ပြီးစီးသော တောင်းဆိုမှု၏ တုံ့ပြန်ချက်ကို ကိုယ်စားပြုပြီး blocks သည် ကော်လ်ဘက်များ စုဆောင်းသော လေ့လာတွေ့ရှိချက်များကို ထိန်းသိမ်းထားသည်။ ဥမင် သို့မဟုတ် TLS သတ်မှတ်မှု မအောင်မြင်ပါက ခေါ်ယူသော အက်ပ်တွင် ပစ်ချသော သယ်ယူပို့ဆောင်ရေး ခြွင်းချက်ကို ကိုင်တွယ်ပါ။ နောက်ဆုံး ဝဘ်ဆိုက် တုံ့ပြန်ချက် မရှိနိုင်ပါ။
ဤအပြုအမူသည် ဖော်ပြထားသော cURL handler နှင့် ဆက်စပ်နေသည်။ စိတ်ကြိုက် သို့မဟုတ် stream handler သည် တူညီသော ပရောက်စီ လက်ဆွဲနှုတ်ဆက်မှု ကော်လ်ဘက်များကို ဖော်ထုတ်ရန် တာဝန်မရှိပါ။ ဖမ်းယူထားသော ပရောက်စီ ခေါင်းစီးများကို ရောဂါစစ်ဆေးမှု ဒေတာအဖြစ် သဘောထားပြီး အကောင့်နှင့် ဆက်စပ်သော တန်ဖိုးများကို မလိုအပ်ဘဲ သိမ်းဆည်းခြင်းကို ရှောင်ကြဉ်ပါ။