Curl ဆိုသည်မှာကွန်ယက်တောင်းဆိုမှုများအတွက် PHP ကိုအသုံးပြုသောအခါအများဆုံးအသုံးများသောနှင့်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ curl_init မှတဆင့် session ကိုကိုင်တွယ်ဖြေရှင်းပြီးနောက် developer များက curl_setopt () ကို အသုံးပြု လေ့ရှိသည်။ တောင်းဆိုမှုပြီးဆုံးသွားသောအခါအရင်းအမြစ်များကိုဖြန့်ချိခြင်းသည်တူညီသည်, ၎င်းသည် curl_close () ကစားသည်။ သို့သော် curl_close () ကို မှားယွင်းစွာခေါ်ဆိုခြင်းသို့မဟုတ်အကြိမ်ကြိမ်ခေါ်ဆိုခြင်းသို့မဟုတ်အကြိမ်ကြိမ်ခေါ်ဆိုခြင်းသည်အစီအစဉ်ကိုပုံမှန်မဟုတ်သောသို့မဟုတ်ပျက်ကျမှုကိုဖြစ်စေနိုင်သည်။
curl_close () ၏ရည်ရွယ်ချက်မှာ curl_close () သည် curl session တစ်ခုနှင့်ဆက်စပ်သောအရင်းအမြစ်များကိုဖြန့်ချိရန်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်ကိုခေါ်ဆိုခြင်းသင်တောင်းဆိုမှုတစ်ခုပြီးဆုံးသွားသောအခါလက်ကိုင်ကိုပြန်လည်အသုံးပြုရန်မလိုအပ်တော့ပါကသင့်တော်သောနှင့်လိုအပ်သောလိုအပ်သည်။ ဥပမာ -
$ch = curl_init("https://gitbox.net/api/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
အထက်ပါကုဒ်တွင်တောင်းဆိုမှုပြီးဆုံးပြီးနောက်အရင်းအမြစ်သည်ပုံမှန်အားဖြင့်ထုတ်ပြန်သည်။
"လုံခြုံမှု" ၏မျက်နှာကို ထောက်. အချို့သော developer များသည် curl_close () ကို တရားမ 0 င်သောနေရာများတွင်မစီရင်ပါလိမ့်မည်။
function fetchData($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
$handle = curl_init("https://gitbox.net/api/user");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($handle);
curl_close($handle); // ပထမ ဦး ဆုံးဖြန့်ချိ
curl_close($handle); // ဒုတိယအရက်,အမှားတစ်ခုပေါ်ပေါက်လာနိုင်သည်
အထက်တွင်ဖော်ပြထားသည့်အတိုင်း curl_close () ကို ဒုတိယအကြိမ် တွင်ဒုတိယအကြိမ်သည် PHP သတိပေးချက်များကိုဖြစ်ပေါ်စေပြီးအချို့သော PHP ဗားရှင်းအချို့ကိုခြွင်းချက်ဖြစ်စေမည့်အရင်းအမြစ်များကိုထပ်ခါတလဲလဲထုတ်လွှတ်ပေးရန်ဖြစ်သည်။
ထပ်ခါတလဲလဲထုတ်လွှတ်ခြင်းမှကာကွယ်ရန်သော့ချက်သည် အရင်းအမြစ်များကိုအစိုးရ၏ထိန်းချုပ်မှု တွင်ရှိသည်။ အောက်ပါနည်းဗျူဟာများကိုမွေးစားနိုင်သည် -
$ch = curl_init("https://gitbox.net/api/login");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (is_resource($ch)) {
curl_close($ch);
}
သို့သော် PHP 7.0 မှ စ. IS_RESOurce () သည် မှားယွင်းသော အရာဝတ်ထုများမဟုတ်ဘဲအရာ 0 တ်ထုများမဟုတ်ဘဲအရာဝတ်ထုများဖြစ်သောကြောင့်ဖြစ်သည်။ ဒါကြောင့်ပြောင်းလဲနိုင်ပါတယ်:
if ($ch instanceof CurlHandle) {
curl_close($ch);
}
Object-Oriented သည် ပို. လှပသောအဖြေဖြစ်သည်။
class CurlRequest {
private $handle;
private $closed = false;
public function __construct($url) {
$this->handle = curl_init($url);
curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, true);
}
public function execute() {
return curl_exec($this->handle);
}
public function close() {
if (!$this->closed) {
curl_close($this->handle);
$this->closed = true;
}
}
public function __destruct() {
$this->close();
}
}
$request = new CurlRequest("https://gitbox.net/api/post");
$response = $request->execute();
$request->close();
Encapsulation ပြုလုပ်ခြင်းဖြင့်အရင်းအမြစ်များကိုထုတ်လွှတ်ခြင်းဖြစ်နိုင်ချေကိုရှောင်ရှားနိုင်သည်။ အဖျက်စွမ်းအား၏ဒီဇိုင်းသည်အရင်းအမြစ်များကိုအရာဝတ်ထုများ၏ဘဝသံသရာအဆုံးမှာလုံခြုံစွာထုတ်ပြန်ခြင်းကိုသေချာစေသည်။
curl_close () သည်ကွန်ယက်တောင်းဆိုမှုအရင်းအမြစ်များကိုဖြန့်ချိရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်, သို့သော်၎င်းကိုတစ်ကြိမ်သာဟုခေါ်သည်ကိုသေချာစေရမည်
ထပ်ခါတလဲလဲခေါ်ဆိုမှု () ကို curlose () ကို curlose () သည်ခြွင်းချက်တစ်ခုဖြစ်ပေါ်စေပြီးအမှတ်အသားပြုခြင်းသို့မဟုတ် encapsulation ပြုလုပ်ခြင်းဖြင့်ရှောင်ရှားသင့်သည်။
PHP 7+ တွင်အရာဝတ်ထု encapsulation နှင့် curlhandle အမျိုးအစားကို ဖြတ်. သယံဇာတစီမံခန့်ခွဲမှုအား 0 င်ရောက်ခြင်းကိုသေချာစေရန်အကြံပြုသည်။
စည်းလုံးညီညွတ်သော curl encapsulations အတန်းကိုအသုံးပြုခြင်းသည်ကုဒ်ပြန်သုံးမှုများကိုပိုမိုကောင်းမွန်စေရုံသာမက debugging နှင့်ပြုပြင်ထိန်းသိမ်းမှုများကိုလည်းလွယ်ကူချောမွေ့စေသည်။
curl_close () ကိုဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်အမှားအယွင်းများကိုရှောင်ရှားရန်နည်းလမ်းတစ်ခုသာမကခိုင်မာသည့်ကုဒ်များကိုရေးသားရန်လည်းနည်းလမ်းတစ်ခုသာဖြစ်သည်။