PHP တွင် HTTP တောင်းဆိုမှုများကိုပြုပြင်ထိန်းသိမ်းခြင်းနှင့်စီမံခန့်ခွဲမှုများကိုကိုင်တွယ်ရန် curl_upkeep function ကိုအသုံးပြုသည်။ အသုံးအများဆုံးအသုံးပြုမှုဖြစ်ရပ်များတွင်ပုံမှန်အသစ်ပြောင်းခြင်းများ, 0 န်ဆောင်မှုအခြေအနေစစ်ဆေးခြင်းသို့မဟုတ်ဟန်ချက်ညီစေရန်။ သို့သော် Developer များအထူးသဖြင့်စမ်းသပ်ခြင်းအဆင့်တွင်အထူးသဖြင့်စမ်းသပ်ခြင်းအဆင့်တွင် Curl_upkeep function ခေါ်ဆိုမှု၏ပျက်ကွက်မှုပျက်ကွက်မှုကိုတုပရန်အလွန်အရေးကြီးသည်။
ဒီဆောင်းပါးမှာ curl_upkeep ခေါ်ဆိုမှုပျက်ကွက်တဲ့နေရာကိုတုပရန်ဘုံနည်းလမ်းများစွာကိုမိတ်ဆက်ပေးလိမ့်မည်။
ဘုံပျက်ကွက်မှု DNS Resolution Differ ။ သင်တောင်းဆိုသောဒိုမိန်းအမည်ကိုမှန်ကန်သော IP လိပ်စာသို့မဖြေရှင်းနိုင်ဟုယူဆပြီး URL ရှိဒိုမိန်းအမည်ကိုပြုပြင်ခြင်းဖြင့်ဤအမှားကိုသင်ပြုလုပ်နိုင်သည်။
<?php
// အာရုံဖော်ခြင်း DNS ခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ
$url = "http://invalid-domain.m66.net"; // ဒီဒိုမိန်းအမည်ကိုခွဲခြမ်းစိတ်ဖြာမရပါ
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Error:' . curl_error($ch); // output error message
}
curl_close($ch);
?>
ဤဥပမာတွင် မ မှန်ကန်သောဒိုမိန်းအမည် မှာ မမှန်ကန်တဲ့ဒိုမိန်းအမည်ဖြစ်သည်။
နောက်ထပ်ဘုံပျက်ကွက်မှုအခြေအနေမှာ connection timeout ဖြစ်သည်။ အကယ်. ဆာဗာသည်သတ်မှတ်ထားသောအချိန်အတွင်းမတုံ့ပြန်ပါက curl connection tinout အမှားအယွင်းရှိသည်။ သငျသညျသေးငယ်တဲ့အချိန်ကုန် setting အားဖြင့်ဒီ Simulate နိုင်ပါတယ်။
<?php
// အာရုံဖော်ခြင်း连接超时
$url = "http://m66.net"; // သက်တမ်းရှိဒိုမိန်းအမည်
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1); // အချိန်ကုန်အချိန်ကိုသတ်မှတ်ပါ1စက်ဏန့်
$response = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Error:' . curl_error($ch); // output error message
}
curl_close($ch);
?>
ဒီဥပမာမှာအချိန်ကုန်လွန်ပြီးကတည်းက server ကို 1 စက္ကန့်အတွင်းမတုံ့ပြန်ဘူးဆိုရင် curl_exec က အချိန်ကုန်အမှားကိုပြန်ပေးလိမ့်မယ်။
နောက်ထပ်ပျက်ကွက်မှုအခြေအနေမှာဆာဗာတွင် (ဥပမာ 5002, စသည်ဖြင့်) ဆာဗာတွင်အမှားအယွင်းတစ်ခုဖြစ်ပွားခဲ့သည်။ ဤအခြေအနေသည်များသောအားဖြင့် code အမှားများ, သယံဇာတကုန်ခန်းခြင်းသို့မဟုတ်ပြည်တွင်းမအောင်မြင်မှုများကဲ့သို့သောဆာဗာဘေးထွက်ပြ problems နာများကြောင့်ဖြစ်သည်။ သင်သည်မှားယွင်းစွာပြုပြင်မွမ်းမံခြင်းအားဖြင့် URL တစ်ခုကိုတောင်းဆိုခြင်းဖြင့်၎င်းကိုသင်ထင်ဟပ်နိုင်သည်။
<?php
// အာရုံဖော်ခြင်း服务器အမှား (5xx)
$url = "http://m66.net/server-error"; // လမ်းကြောင်းပြန်ယူဆ 500 အမှား
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Error:' . curl_error($ch); // output error message
} else {
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code >= 500 && $http_code < 600) {
echo "服务器အမှား,HTTP အခြေအနေကုဒ်: $http_code"; // အာရုံဖော်ခြင်း 5xx အမှား
}
}
curl_close($ch);
?>
ဤဥပမာတွင် server-error-error သည် ဆာဗာအမှားကိုအတုယူခြင်းအားဖြင့်အမှားအယွင်း 500 အမှားကိုပြန်ပို့သည်ဟုယူဆသည်။
ကွန်ယက်ပြတ်တောက်ခြင်းကဲ့သို့သောကွန်ယက်ပြ problems နာများကိုတုပရန်လိုအပ်ပါကကွန်ယက်ချိတ်ဆက်မှုသို့မဟုတ်ဒေသဆိုင်ရာဆာဗာတစ်ခုကိုအသုံးပြုခြင်းဖြင့်သင်တုပနိုင်သည်။ အချို့သောဖွံ့ဖြိုးမှုပတ် 0 န်းကျင်များတွင်ကွန်ယက်ကိုချိတ်ဆက်ခြင်းသို့မဟုတ်အလားတူအမှားများကိုအစပျိုးရန်ကွန်ယက်ကိုချိတ်ဆက်နိုင်သည်သို့မဟုတ်ကွန်ယက်ကြားဖြတ်ကိုတုပနိုင်သည်။
ဆာဗာလုံးဝတုံ့ပြန်မှုမရှိသောအခြေအနေကိုလည်းသင်တုပနိုင်သည်။ ဥပမာအားဖြင့်, တုံ့ပြန်မှုမရှိသော URL ကိုသုံးပါ, သို့မဟုတ်ဒေသအလိုက်အကြောင်းအရာများကိုပြန်မသွားနိုင်သောဆာဗာတစ်ခုကိုအတုယူပါ။
<?php
// အာရုံဖော်ခြင်း服务器无响应
$url = "http://m66.net/no-response"; // လမ်းကြောင်းသည်တုံ့ပြန်မှုမရှိပါဟုယူဆပါ
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // အချိန်ကုန်အချိန်ကိုသတ်မှတ်ပါ5စက်ဏန့်
$response = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Error:' . curl_error($ch); // output error message
}
curl_close($ch);
?>
ဤတွင် အဘယ်သူမျှမတုန့်ပြန်မှုသည် တုံ့ပြန်မှုမရှိသောအခြေအနေကိုတုပသည့်မသိဘဲရမ်းမေးတဲ့လမ်းကြောင်းတစ်ခုဖြစ်သည်။
403 (တားမြစ်သည်), 404 (Forididdiddid) စသည်တို့ကဲ့သို့ 4xx အမှားများကိုစသည်တို့ကို (4XX အမှားအယွင်းများ) ကိုစသည်တို့ကို (44)) ကိုတောင်းဆိုခြင်းသို့မဟုတ်လက်လှမ်းမမီသောအခွင့်အရေးများမရှိသေးသောအရင်းအမြစ်များကိုတောင်းခံခြင်းအားဖြင့် simulated လုပ်နိုင်သည်။