လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_close နှင့်အတူပိတ်ပြီးနောက်ဆံပင်ကောက်ကောက်အတွက်အမှားအယွင်းများကိုကြည့်ရှုခြင်းနှင့် debug အမှားများကိုဘယ်လိုကြည့်ရှုမလဲ။

curl_close နှင့်အတူပိတ်ပြီးနောက်ဆံပင်ကောက်ကောက်အတွက်အမှားအယွင်းများကိုကြည့်ရှုခြင်းနှင့် debug အမှားများကိုဘယ်လိုကြည့်ရှုမလဲ။

gitbox 2025-05-26

ကွန်ယက်တောင်းဆိုမှုများအတွက် PHP ၏ curl extension ကိုအသုံးပြုသောအခါ developer များက curl_close () ကို curl_close () ကို curl session ကိုပိတ်ရန်ခေါ်ကြသည်။ သို့သော်လူအများစုကဤပြ problem နာကိုဖြေရှင်းသောအခါ - ဘာဖြစ်လို့လဲဆိုတော့ curl_close () curlose () ကိုဟုခေါ်သောကြောင့်အမှားများအပါအ 0 င် session နှင့်သက်ဆိုင်သောအရင်းအမြစ်များကိုထုတ်ပြန်လိမ့်မည်။

ဤဆောင်းပါးသည် session တစ်ခုကိုမပိတ်မီဖြစ်နိုင်ချေရှိသောအမှားများကိုကောက်ကောက်ထဲတွင်ဖြစ်နိုင်ချေရှိသောအမှားများကိုမည်သို့ရယူရမည်ကိုရှင်းပြပါမည်။

ဘာကြောင့်အမှားအယွင်းကို curl_close () မတိုင်မီရရန်ဘာကြောင့်ရရှိနိုင်သနည်း။

curl_close () curl_init မှဖန်တီးထားသောဆံပင်ကောက်ကောက်ကိုထုတ်ပေးသည်။ ဖြန့်ချိပြီးတာနဲ့အမှားအယွင်းကိုကြည့်ရှုရန် curl_error () သို့မဟုတ် curl_errno () curl_errno () curl_errno () ကိုမခေါ်နိုင်တော့ပါ။ ၎င်းသည်လက်ကိုင်ကိုပိတ်ခြင်းမပြုမီ debugging သို့မဟုတ်အသံသွင်းရန်အချိန်အတွက်အမှားသတင်းအချက်အလက်များကိုအချိန်မီရယူရန်လိုအပ်သည်။

မှန်ကန်သော debugging အမိန့်

အောက်ဖော်ပြပါသည်ပုံမှန်တောင်းဆိုမှုဖြစ်စဉ်တစ်ခုဖြစ်သည်။

 <?php

$url = "https://gitbox.net/api/data";

// ဖြစ်ပေါ်လာခြင်း cURL ရုံးထိုင်အချိန်ကာလ
$ch = curl_init();

// တည်ဆောက်သည် cURL ရွေးချယ်စရာများ
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// တောင်းဆိုမှုကို execute
$response = curl_exec($ch);

// 在ရုပ်သိမ်းခြင်းရုံးထိုင်အချိန်ကာလ前获取အမှား信息
if (curl_errno($ch)) {
    $errorCode = curl_errno($ch);
    $errorMessage = curl_error($ch);
    error_log("cURL အမှား [$errorCode]: $errorMessage");
} else {
    // ထုတ်ယူခြင်းတုံ့ပြန်မှု
    echo "တုံ့ပြန်မှုအကြောင်းအရာ: " . $response;
}

// ရုပ်သိမ်းခြင်း cURL ရုံးထိုင်အချိန်ကာလ
curl_close($ch);

နောက်ထပ် debugging ကျွမ်းကျင်မှု

curl_error () နှင့် curl_errno () အပြင်, အောက်ပါနည်းလမ်းများကို ထပ်မံ. debug လုပ်ရန်အောက်ပါနည်းလမ်းများကိုသုံးနိုင်သည်။

1 ။ အသေးစိတ်အချက်အလက်များကို Enable လုပ်ပါ

curlopt_Verbosebose ကို စစ်မှန်တဲ့ ပုံသွင်းလို့ရပါတယ်။

 curl_setopt($ch, CURLOPT_VERBOSE, true);

သင် log file သို့ veritanose အချက်အလက်ကိုရေးလိုလျှင် -

 $verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, $verbose);

တောင်းဆိုမှုပြီးဆုံးသွားသောအခါ, မှတ်တမ်းအကြောင်းအရာများကိုဖတ်ရှုနိုင်သည်။

 rewind($verbose);
$verboseLog = stream_get_contents($verbose);
error_log("cURL သတင်းအချက်အလက် debugging: \n" . $verboseLog);

2 ။ HTTP status ကုဒ်ကိုစစ်ဆေးပါ

တစ်ခါတစ်ရံတွင်တောင်းဆိုမှုကိုယ်တိုင်သည်ကွန်ယက်အမှားတစ်ခုမရှိပါ, သို့သော်ဆာဗာသည် HTTP status code ကိုပြန်ပို့သည်။ သင်စစ်ဆေးနိုင်သည်

 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode !== 200) {
    error_log("HTTP အခြေအနေကုဒ်: $httpCode");
}

3 ။ try-catch နှင့် encapsulation များ၏လုပ်ဆောင်ချက်များကိုသုံးပါ

မြှောက်ဖြည့်တင်းခြင်းနှင့်အမှားဖမ်းယူခြင်းဖြင့်ဆံပင်ကောက်ကောက်တောင်းဆိုမှုများကို function တစ်ခုထဲသို့ encapsulated လုပ်နိုင်သည်။

 function fetchData($url) {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
    ]);

    $response = curl_exec($ch);

    if (curl_errno($ch)) {
        $error = curl_error($ch);
        curl_close($ch);
        throw new Exception("cURL တောင်းဆိုမှုပျက်ကွက်: " . $error);
    }

    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode !== 200) {
        throw new Exception("HTTP အခြေအနေကုဒ်အမှား: " . $httpCode);
    }

    return $response;
}

try {
    $data = fetchData("https://gitbox.net/api/data");
    echo "အောင်မြင်စွာရယူပါ: $data";
} catch (Exception $e) {
    error_log("ခြွင်းချက်ဖမ်း: " . $e->getMessage());
}

အကျဉ်းချုပ်

ကွန်ယက်တောင်းဆိုမှုများအတွက် PHP ၏ဆံပင်ကောက်ကောက်ကိုအသုံးပြုသောအခါ debugging လုပ်ရန်သော့ချက်မှာ session ကိုမပိတ်မီအချိန်မီအမှားအချက်အလက်များကိုအချိန်မီရရှိရန် ဖြစ်သည်။ curl_errno () , curl_error (), curl_getinfo () , curl_getinfo () , curlopt_verbose ကဲ့သို့သောကိရိယာများကို အသုံးပြု. developer များကပြ problems နာများကိုထိရောက်စွာရှာဖွေတွေ့ရှိနိုင်ပြီးပရိုဂရမ်တည်ငြိမ်မှုကိုတိုးတက်ကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။ curl_close () အပြီးအမှားအယွင်းများသို့မဟုတ် debug အချက်အလက်များရရန်မကြိုးစားရန်သတိရပါ။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    cURL