ကွန်ယက်တောင်းဆိုမှုများအတွက် PHP ၏ curl extension ကိုအသုံးပြုသောအခါ developer များက curl_close () ကို curl_close () ကို curl session ကိုပိတ်ရန်ခေါ်ကြသည်။ သို့သော်လူအများစုကဤပြ problem နာကိုဖြေရှင်းသောအခါ - ဘာဖြစ်လို့လဲဆိုတော့ curl_close () curlose () ကိုဟုခေါ်သောကြောင့်အမှားများအပါအ 0 င် session နှင့်သက်ဆိုင်သောအရင်းအမြစ်များကိုထုတ်ပြန်လိမ့်မည်။
ဤဆောင်းပါးသည် session တစ်ခုကိုမပိတ်မီဖြစ်နိုင်ချေရှိသောအမှားများကိုကောက်ကောက်ထဲတွင်ဖြစ်နိုင်ချေရှိသောအမှားများကိုမည်သို့ရယူရမည်ကိုရှင်းပြပါမည်။
curl_close () curl_init မှဖန်တီးထားသောဆံပင်ကောက်ကောက်ကိုထုတ်ပေးသည်။ ဖြန့်ချိပြီးတာနဲ့အမှားအယွင်းကိုကြည့်ရှုရန် curl_error () သို့မဟုတ် curl_errno () curl_errno () curl_errno () ကိုမခေါ်နိုင်တော့ပါ။ ၎င်းသည်လက်ကိုင်ကိုပိတ်ခြင်းမပြုမီ 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);
curl_error () နှင့် curl_errno () အပြင်, အောက်ပါနည်းလမ်းများကို ထပ်မံ. debug လုပ်ရန်အောက်ပါနည်းလမ်းများကိုသုံးနိုင်သည်။
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);
တစ်ခါတစ်ရံတွင်တောင်းဆိုမှုကိုယ်တိုင်သည်ကွန်ယက်အမှားတစ်ခုမရှိပါ, သို့သော်ဆာဗာသည် HTTP status code ကိုပြန်ပို့သည်။ သင်စစ်ဆေးနိုင်သည်
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode !== 200) {
error_log("HTTP အခြေအနေကုဒ်: $httpCode");
}
မြှောက်ဖြည့်တင်းခြင်းနှင့်အမှားဖမ်းယူခြင်းဖြင့်ဆံပင်ကောက်ကောက်တောင်းဆိုမှုများကို 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