SOCKS proxy အတွက် Guzzle ၏ cURL handler ရွေးချယ်ခြင်း
HTTP stream များကိုသာ ပံ့ပိုးသော handler သည် proxy URL မှ SOCKS ညှိနှိုင်းမှု မရနိုင်ပါ; အမှန်တကယ် PHP runtime တွင် ပံ့ပိုးသော transport ကို ရွေးချယ်ပါ။
Guzzle client ၏ handler ကို တမင်ရွေးချယ်သောအခါ cURL အခြေခံ stack သည် SOCKS ကို အသုံးပြုနိုင်သည်:
$stack = \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
);
$client = new \GuzzleHttp\Client([
'handler' => $stack,
'proxy' => 'socks5h://proxy.example.net:1080',
]);socks5h သည် proxy ကို ဆိုက်ရောက်မည့်အမည်ကို ဖြေရှင်းရန် တောင်းဆိုသည်။ Guzzle သည် endpoint ကို libcurl သို့ လွှဲပေးသောကြောင့် တင်ထားသော libcurl build သည် ထို protocol ကို ပံ့ပိုးရမည်။ SOCKS5 proxy စာရင်း သည် client proxy URL အတွက် အများသုံး endpoint ကိုယ်စားလှယ်လောင်းများကို ပေးသည်။
အပလီကေးရှင်းတွင် handler stack ရှိပြီးသားဖြစ်ပါက အစားထိုးပြီး middleware မဆုံးရှုံးမီ ၎င်း၏ အောက်ခံ transport ကို စစ်ဆေးပါ။ PHP HTTP stream များအတွက်သာ ကန့်သတ်ထားသော handler သည် client ဤရွေးချယ်မှုကို ရရှိသောကြောင့်သာ SOCKS ကို အကောင်အထည်မဖော်နိုင်ပါ။
တောင်းဆိုမှုကို လုပ်ဆောင်သော process ကို စစ်ဆေးပါ။ CLI PHP နှင့် PHP-FPM သည် မတူညီသော configuration ဖိုင်များနှင့် extension များကို တင်နိုင်သည်; တစ်ခုတွင် cURL ရှိခြင်းက အခြားတစ်ခုတွင် ရရှိနိုင်ကြောင်း မသက်သေပါ။