MySQLI :: Debug (Debug) ကိုအသုံးပြုခြင်း MySQLI ဆက်သွယ်မှုများနှင့်ကွပ်မျက်ခြင်းကို debing လုပ်ရန်အလွန်လက်တွေ့ကျကျနည်းလမ်းဖြစ်သည်။ ၎င်းသည်အခြေခံခေါ်ဆိုမှုများ, ဆက်သွယ်မှုအသေးစိတ်, ကွပ်မျက်ထုတ်ပြန်ချက်များနှင့်အခြားအချက်အလက်များကိုမှတ်တမ်းဖိုင်များထဲသို့မှတ်တမ်းတင်နိုင်ပြီးပြ problems နာများကိုခွဲခြမ်းစိတ်ဖြာရန်ကူညီနိုင်သည်။ သို့သော်တစ်ခါတစ်ရံတွင် developer များသည်ရှုပ်ထွေးသောဖြစ်ရပ်တစ်ခုကိုကြုံတွေ့ရနိုင်သည် ။ ဒီတော့ဒီအရာကဘာအကြောင်းရင်းဖြစ်နိုင်သလဲ။
ပြ the နာကိုမဆန့်ကျင်မီ, MySQLI :: Debug () Debug () ကိုမှန်ကန်စွာဟုခေါ်သည်ကို ဦး စွာအတည်ပြုသည်။ အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
mysqli::debug("d:t:o,/tmp/client.trace");
$mysqli = new mysqli("localhost", "username", "password", "database");
debugging options ကိုရှင်းပြပါ:
Debug DeDatcher (အထွေထွေ Debug Tracing)
T : Record Tracking Information (ခြေရာခံခြင်း)
o, TMP / client.trace : log to /tmp/Cletient.trace ဖိုင်သို့ log to output လုပ်ပါ
??ကြိုတင်သတိပေးချက်များ:
MySQLI :: debug () ကို အကျိုးသက်ရောက်စေရန် ဆက်သွယ်မှုကိုဖန်တီးခြင်းမပြုမီ ခေါ်ရမည်။
MySQLI :: Debug () Debug () သည် static method တစ်ခုဖြစ်သည်။
သင်မြင်တွေ့ရမည့်မှတ်တမ်းအချက်အလက်များကိုဗလာဖြစ်စေသည်။
MySQLI :: Debug () Debug () function သည် MySQL client library (libmsqlqlies သို့မဟုတ် MySQLND) တွင်မူတည်သည်။ MySQLI :: Debug () MySQLND ကိုသုံးသောအခါ MySQLND (MySQL ဇာတိယာဉ်မောင်း) ကိုအသုံးပြုသောအခါသာထောက်ပံ့သည်။ အကယ်. သင်၏ PHP သည် Libmclintien ကို အသုံးပြုနေပါက Debugging Function သည်အကျိုးသက်ရောက်မည်မဟုတ်ပါ။
သင်အတည်ပြုနိုင်သည်:
echo mysqli_get_client_stats() ? 'mysqlnd' : 'libmysqlclient';
သို့မဟုတ်:
phpinfo(); // တေှ့မြင် mysqlnd enable ဖို့ရှိမရှိ
အကယ်. သင်သည် LibmclClient ကို အသုံးပြုနေပါက MySQLND သို့ပြောင်းရန်အကြံပြုပါသည်။
သတ်မှတ်ထားသောမှတ်တမ်းလမ်းကြောင်း (ဥပမာ /tmp/cloyient.tace ကဲ့သို့) အကယ်. PPP သို့မရေးနိုင်ပါကမှတ်တမ်းကိုထုတ်လုပ်။ မရပါ။ ဤလမ်းကြောင်းသည် PHP (ဥပမာ www-data, apache, apache, nginx) အသုံးပြုသူများကိုအသုံးပြုသူများကိုခွင့်ပြုချက်ပေးရန်ခွင့်ပြုထားပါ။
ခွင့်ပြုချက်ကိုစစ်ဆေးနိုင်သည်
sudo touch /tmp/client.trace
sudo chown www-data:www-data /tmp/client.trace
sudo chmod 664 /tmp/client.trace
အကယ်. MySQLI :: Debug () Debug () ကို ဆက်သွယ်မှုကိုပြုလုပ်ပြီးနောက်ဟုခေါ်သည်ဆိုပါက၎င်းသည်အကျိုးသက်ရောက်မည်မဟုတ်ပါ။ MySQLI အသစ် မတိုင်မီဟုခေါ်သည်ကို သေချာအောင်လုပ်ပါ။
အမှားသရုပ်ပြ
$mysqli = new mysqli("localhost", "username", "password", "database");
mysqli::debug("d:t:o,/tmp/client.trace"); // အားမရှိသော!
မှန်ကန်သောအရေးအသား -
mysqli::debug("d:t:o,/tmp/client.trace");
$mysqli = new mysqli("localhost", "username", "password", "database");
အချို့ဖြစ်ရပ်များတွင်သင်သည် P: Host ပုံစံတွင်မြဲမြဲချိတ်ဆက်မှုတစ်ခုကိုအသုံးပြုနေပါက Debugging သည်မျှော်လင့်ထားသည့်အတိုင်းသတင်းအချက်အလက်များကိုမှတ်တမ်းတင်မည်မဟုတ်ပါ။ သငျသညျမ ens ည့်သည်မဟုတ်သောဆက်သွယ်မှုနှင့်အတူပြ esh နာဖြေရှင်းရန်ကြိုးစားနိုင်ပါတယ်။
ဆက်သွယ်မှုကိုထူထောင်ပြီးနောက်မည်သည့်စုံစမ်းမှုကိုမျှမလုပ်ဆောင်ပါကမှတ်တမ်းတွင်သတင်းအချက်အလက်မရှိနိုင်ပါ။ ရိုးရှင်းသောစုံစမ်းမှုစစ်ဆေးမှုကိုထပ်မံထည့်သွင်းရန်ကြိုးစားနိုင်သည်။
mysqli::debug("d:t:o,/tmp/client.trace");
$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->query("SELECT * FROM users");
/ -Var/log/ mysqli.tace ကဲ့သို့သော log output ကို output လုပ်ရန်အကြွင်းမဲ့လမ်းကြောင်းကို သုံး. သင့်လျော်သောခွင့်ပြုချက်များကိုသတ်မှတ်ပါ။
ရှုပ်ထွေးသောစီးပွားရေးယုတ္တိဗေဒကို 0 င်ရောက်စွက်ဖက်ခြင်းမှရှောင်ကြဉ်ရန်ဖြစ်နိုင်သည့်အခါတိုင်း debugging function များကိုစမ်းသပ်ရန်လွတ်လပ်သော scial များကိုသုံးပါ။
သတင်းအချက်အလက်ယိုစိမ့်မှုကိုရှောင်ရှားရန်လမ်းညွှန်လမ်းကြောင်းကို 0 င်ရောက်ရန်လမ်းညွှန်လမ်းကြောင်းကို Public Network တွင်နေရာမချရန်အကြံပြုသည်။
<?php
// Debug မှတ်တမ်းလမ်းကြောင်းကိုသတ်မှတ်ပါ
mysqli::debug("d:t:o,/tmp/mysqli_debug.log");
// ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ပါ
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_database");
// တစ် ဦး စုံစမ်းမှု execute
$result = $mysqli->query("SELECT * FROM users");
// ရလဒ်များကိုပြပါ
while ($row = $result->fetch_assoc()) {
echo $row['username'] . "\n";
}
?>
မှတ်တမ်း output ကို /tmp/mysqli_debuggug.log တွင်သင်ကြည့်ရှုနိုင်သည်။ ရေးရန်ခွင့်ပြုချက်ကိုသတ်မှတ်ရန်သတိရပါ။
တရားဝင်စာရွက်စာတမ်း (M66.net ဒိုမိန်းအမည်နှင့်အစားထိုးသည်)