Daily Php Development တွင် Database စွမ်းဆောင်ရည်ပြ problems နာများသည်အထူးသဖြင့်အထူးသဖြင့်ပြတ်ပြတ်သားသားပြတ်တောင်းပြတ်တောင်းပြတ်တောင်းပြတ်တောင်းပြ problems နာများဖြစ်လေ့ရှိသည်။ ကံကောင်းထောက်မစွာပင် PHP ၏ MySQLI extension သည် MySQLI :: Debug ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်အသေးစိတ်ဒေတာဘေ့စ်စစ်ဆင်ရေးမှတ်တမ်းများကိုအထောက်အကူပြုနိုင်ပြီး,
MySQLI :: Debug သည် MySQLI အတန်းထဲတွင် MySQLI အတန်းထဲတွင်နည်းလမ်းဖြစ်သည်။ ဤနည်းလမ်းသည် MySQL client လုပ်ငန်းများနှင့်ဆက်စပ်သော MySQL သုံးစွဲမှုလုပ်ငန်းများကို log file တစ်ခုသို့, SQL Execution တွင်ခြွင်းချက်များသို့မဟုတ်စွမ်းဆောင်ရည်ဆိုင်ရာပြ issues နာများကိုဖြေရှင်းရန်ကူညီပေးနေသည်။
mysqli::debug(string $debug_options): bool
ဤနည်းလမ်းကို database connection တစ်ခုမတိုင်မီခေါ်ဆိုလေ့ရှိပြီး PHP compile အချိန်၌ MySQLND driver ကိုဖွင့်ရန်လိုအပ်ပြီး debugging ကိုခွင့်ပြုသည်။
MySQLI :: Debug ကို အသုံးပြုရန်သင်သေချာစေရန်လိုအပ်သည်။
PHP MySQLND driver ကိုအသုံးပြုသည် Phpinfo ကို ကြည့်ခြင်းဖြင့်သင်အတည်ပြုနိုင်သည်။
phpinfo();
MySQLND ကိုရှာဖွေပါ, အကယ်. သင်သည်အောက်ပါစကားလုံးများကိုမြင်လျှင်,
Client API library version => mysqlnd 8.x.x
Debugging Enable လုပ်ရန် Php.ini configuration ကိုပြင်ဆင်ပါ
mysqlnd.debug = "/tmp/mysqlnd.log"
ပြုပြင်မွမ်းမံပြီးနောက် PHP-FPM သို့မဟုတ် Apache 0 န်ဆောင်မှုကိုပြန်လည်စတင်ပါ။
သင်၏ PHP script တွင် MySQLI :: Debug (Debug) ဟုခေါ်ပါ။ ထို့နောက်ဒေတာဘေ့စ်ဆက်သွယ်မှုကို ဖန်တီး. ပုံမှန်အားဖြင့်မေးခွန်းကိုကွပ်မျက်ပါ။ ဥပမာအားဖြင့်:
<?php
// Debug သစ်ထုတ်လုပ်ခြင်းကို Enable လုပ်ပါ
mysqli::debug("d:t:o,/tmp/mysqlnd.log");
// ဒေတာဘေ့စ်ဆက်သွယ်မှု
$mysqli = new mysqli("localhost", "db_user", "db_pass", "db_name");
if ($mysqli->connect_errno) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error;
exit();
}
// တစ် ဦး စုံစမ်းမှု execute
$result = $mysqli->query("SELECT * FROM users WHERE status = 'active'");
while ($row = $result->fetch_assoc()) {
echo $row['username'] . "<br>";
}
$mysqli->close();
?>
အတွက်
denable debugging
tadtam
o, / TMP / MySQLNDD.LOG သည် output ဖိုင်ကိုသတ်မှတ်သည်
Debug Log သည်သင် သတ်မှတ်ထားသော တည်နေရာ ( /tmp/mysqlnd.log ကဲ့သို့သော ) ကို output လုပ်လိမ့်မည်။
tail -f /tmp/mysqlnd.log
ဘုံဆန်းစစ်ချက်အချက်များပါဝင်သည်:
connection အချိန်ကိုစားသုံးပါသလား
စုံစမ်းမှုကြေညာချက်အကြိမ်ကြိမ်ကွပ်မျက်ခံရသည်ဖြစ်စေ
cache hit ရှိလျှင်မေးမြန်းခြင်း
နှေးကွေးသောစုံစမ်းမှုသည်အချိန်ယူရသည်
SQL ထုတ်ပြန်ချက်များကိုရှင်းပြခြင်းအားဖြင့်သင်အညွှန်းကိန်းကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန်သို့မဟုတ်စားပွဲအပြည့်ကိုစကင်ဖတ်စစ်ဆေးရန်သင်လိုအပ်သည်ကိုပိုမိုတိကျစွာဆုံးဖြတ်နိုင်သည်။
MySQLI :: Debug သည် ကြွယ်ဝသော client သတင်းအချက်အလက်များကိုပေးသည်။
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
MySQLI :: Debug 'S သုံးစွဲသူသစ်လုံးများပေါင်းစပ်ထားသောနှေးကွေးသောစုံစမ်းမှုမှတ်တမ်းများကို MySQUS ၏သုံးစွဲသူသစ်လုံးများနှင့်ပေါင်းစပ်ခြင်းများကိုလျင်မြန်စွာရှာဖွေရန်နှစ်ဖက်စလုံးမှပူးပေါင်းဆောင်ရွက်မှုကိုခွဲခြမ်းစိတ်ဖြာနိုင်သည်။
စွမ်းဆောင်ရည်နှင့်လုံခြုံရေးအကြောင်းပြချက်များအတွက် Debugging ကိုဖွံ့ဖြိုးရေးသို့မဟုတ်စမ်းသပ်ခြင်းပတ် 0 န်းကျင်များတွင်အသုံးပြုသင့်သည်။ debugging ပြီးနောက်ပိတ်ရန်သတိရပါ။
mysqli::debug(""); // debugging parameters တွေကို shutdown နှင့်တန်းတူရှင်းလင်းပါ
MySQLI :: Debug မှတစ်ဆင့် Debug မှတစ်ဆင့်ကျွန်ုပ်တို့သည် PHP scripts နှင့် MySQL တို့အကြားအပြန်အလှန်ဆက်သွယ်မှုကိုတိကျစွာမှတ်တမ်းတင်နိုင်ပြီး database connection ပြ problems နာများနှင့်စုံစမ်းမှုစစ်ဆေးခြင်းကိုနှေးကွေးစေခြင်းနှင့်နှေးကွေးခြင်းခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်အလွန်တန်ဖိုးရှိသည်။ ဖွံ့ဖြိုးတိုးတက်မှုအဆင့်တွင်ဤကိရိယာကိုကောင်းစွာအသုံးပြုခြင်းသည်စတင်မိတ်ဆက်ပြီးနောက် "သတ္တုတွင်းကိုအရှိန်မြှင့်ခြင်း" ဖြစ်နိုင်ခြေကိုများစွာလျှော့ချနိုင်သည်။