လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP script တွင်နှောင့်နှေးမှုများကိုမည်သို့ရှောင်ရှားနိုင်မည်နည်း။

PHP script တွင်နှောင့်နှေးမှုများကိုမည်သို့ရှောင်ရှားနိုင်မည်နည်း။

gitbox 2025-05-26

Curl ဆိုသည်မှာကွန်ရက်တောင်းဆိုမှုများအတွက် PHP ကိုအသုံးပြုသောအခါအသုံးအများဆုံးကိရိယာများအနက်မှတစ်ခုဖြစ်သည်။ Developer တော်တော်များများကအရင်းအမြစ်ကိုစံသတ်မှတ်ချက်အရစံသတ်မှတ်ချက်အရတွက်ချက်မှု ကိုပိတ်ပစ်လိမ့်မည်။ သို့သော်အချို့သောအခြေအနေများတွင်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းသို့မဟုတ်စွမ်းဆောင်ရည်မြင့်မားသောလိုအပ်ချက်များနှင့်အတူလျှို့ဝှက်ပြ problem နာကိုကြုံတွေ့ရလိမ့်မည်

ဤနှောင့်နှေးခြင်းသည်များသောအားဖြင့်ရှည်လျားသော connection (Keep- အသက်ရှင်ခြင်း) သို့မဟုတ်သတ်သတ်မှတ်မှတ်ဆာဗာဖွဲ့စည်းမှုတစ်ခု၏အခြေအနေတွင်တွေ့ရှိရသည်။ တောင်းဆိုမှုကိုပြီးဆုံးသွားပုံရသော်လည်း curl_close သည် နောက်ခံဆက်သွယ်မှု၏လွှတ်ပေးရေးလုပ်ငန်းစဉ်ကိုအမှန်တကယ်စောင့်ဆိုင်းနေရခြင်းဖြစ်နိုင်သည်။

ပြနာ

ရိုးရှင်းတဲ့ဥပမာတစ်ခုကိုကြည့်ရအောင်။

 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.gitbox.net/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

echo "အပြည့်အဝတောင်းဆိုမှု";

များသောအားဖြင့်ဤကုဒ်ကိုလျင်မြန်စွာကွပ်မျက်နိုင်သည်။ သို့သော်အချို့သောဆာဗာပတ်ဝန်းကျင်တွင် (အထူးသဖြင့်ပစ်မှတ်ထားဆာဗာသည် HTTP / 2 သို့မဟုတ်ဆက်သွယ်မှုခကျြနှင့်ကိုက်ညီမှုကိုထောက်ပံ့သောအခါ) curl_close ရာပေါင်းများစွာအတွက်ရာနှင့်ချီသောမီလီစက္ကန့်များအတွက်ပိတ်ဆို့နိုင်သည်။

ခွဲခြမ်းစိတ်ဖြာခြင်းဖြစ်ပေါ်စေသည်

curl_close သည် အခမဲ့မှတ်ဉာဏ်မျှသာမဟုတ်ပါ, ၎င်းသည် HTTP Keep-Live ကိုဖွင့်ထားသည့်အခါနောက်ခံ TCP ဆက်သွယ်မှုကိုပိတ်ထားရန်သို့မဟုတ်လွတ်မြောက်လာသောအရင်းအမြစ်များကိုပိတ်ထားရန်စောင့်ဆိုင်းနိုင်သည်။ Libcurl စာကြည့်တိုက်၏ဗားရှင်းအသစ်များကိုအသုံးပြုခြင်းသို့မဟုတ်သတ်သတ်မှတ်မှတ်ဆာဗာများနှင့်ဆက်သွယ်သည့်အခါဤအပြုအမူသည်ပိုမိုသိသာထင်ရှားသည်။

ထို့အပြင် curl_exec ပြန်လည်ရောက်ရှိသည့်အချက်အလက်များကိုအပြည့်အ 0 ပြန်မဖတ်ပါက curl_close သည် ကျန်ရှိသောအချက်အလက်များကိုနောက်ခံတွင်ရှင်းလင်းရန်ကြိုးစားနိုင်သည်။

အဖေြ

1 ။ အတိအလင်းဆက်သွယ်မှုကိုပိတ်ပါ

connipt_forbid_reuse ကို curlopt_forbid_reuse ကိုသုံးပြီး curlopt_forbid_reuse ကိုသုံးပြီး connowt_forbid_reuse ကိုသုံးပြီး connect ကိုပိတ်နိုင်တယ်။

 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.gitbox.net/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true); // Connection Reuse ကိုပိတ်ပါ
$response = curl_exec($ch);
curl_close($ch);

ဤနည်းလမ်းသည်အချို့သောစွမ်းဆောင်ရည်ကိုစွန့်လွှတ်လိမ့်မည် (အဘယ်ကြောင့်ဆိုသော်ဆက်သွယ်မှုတိုင်းအတွက် connection အသစ်ကိုဖန်တီးထားသောကြောင့်) curl_close ပိတ်ဆို့ခြင်းပြ problems နာများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။

2 ။ ဆံပင်ကောက်ကောက်အစား fsocopen ကို သုံးပါ (ရိုးရှင်းသောရယူပါ။ )

သငျသညျရိုးရိုးရှင်းရှင်းတောင်းဆိုမှုများကိုရယူရန်နှင့်စွမ်းဆောင်ရည်အပေါ်အလွန်စိုးရိမ်ပူပန်ရန်လိုအပ်ပါကတောင်းဆိုမှုများကိုကိုယ်တိုင်ဆောက်လုပ်ရန်အတွက် fsocckopen ကို အသုံးပြု. Curl ၏သယံဇာတများကို 0 င်ရောက်ခြင်းကိုကျော်လွှားရန်စဉ်းစားပါ။

3 ။ ပြတ်တောင်းပြတ်တောင်းဖြန့်ချိမှု (သတ်သတ်မှတ်မှတ်မူဘောင် / ပတ်ဝန်းကျင်အတွက်သာ)

အကယ်. သင်သည် SWOOLE နှင့် REFRPHP ကဲ့သို့သော asynchronous frameworks များကိုအသုံးပြုနေပါကအဓိကချည်နှောင်ခြင်းကိုတားဆီးရန်နောက်ခံတွင် curl ကိုသင်ခန်းစာယူနိုင်သည်။

4 ။ ဆံပင်ကောက်ကောက်လက်ကိုင် (အဆင့်မြင့်)

တောင်းဆိုမှုများစွာအတွက်သင် curl_multi_ * interface ကို သုံး. curl_cles မကြာခဏဖန်တီးမှုနှင့်လက်ကိုင်များကိုဖြတ်တောက်ခြင်းကိုရှောင်ရှားရန်, သို့သော်၎င်းသည်အဆင့်မြင့်အသုံးပြုမှုတစ်ခုဖြစ်ပြီး SDKs သို့မဟုတ်အခြေခံစာကြည့်တိုက်များတည်ဆောက်ရန်သင့်တော်သည်။

အကျဉ်းချုပ်

curl_close သည် လက်ကိုင်ကိုပိတ်ရန်စစ်ဆင်ရေးတစ်ခုမျှသာဖြစ်ပုံရသည်ဆိုသော်လည်းအချို့သောအခြေအနေများတွင်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းဖြစ်လာနိုင်သည်။ အမှန်တကယ်လိုအပ်ချက်များအရအခြားကွန်ရက်တောင်းဆိုမှုကိုနည်းလမ်းများပိုမိုလွယ်ကူစွာရွေးချယ်ခြင်းသို့မဟုတ်ရွေးချယ်ခြင်းအားဖြင့် curl option ကို setting အားဖြင့်, curl_close ကြောင့်ဖြစ်ရတဲ့မလိုအပ်သောနှောင့်နှေးမှုများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ စွမ်းဆောင်ရည် - အထိခိုက်မခံသော PHP စီမံကိန်းများတွင်ဤအသေးစိတ်အချက်အလက်များကိုအာရုံစိုက်ခြင်းသည်များသောအားဖြင့်ချောမွေ့သောအသုံးပြုသူအတွေ့အကြုံနှင့်ပိုမိုမြင့်မားသော system throughpput ကိုဖြစ်ပေါ်စေသည်။