လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Database Timeout ပြ Proble နာများကိုခွဲခြမ်းစိတ်ဖြာရန် MySQLI :: Debug ကိုမည်သို့အသုံးပြုရမည်နည်း

Database Timeout ပြ Proble နာများကိုခွဲခြမ်းစိတ်ဖြာရန် MySQLI :: Debug ကိုမည်သို့အသုံးပြုရမည်နည်း

M66 2025-05-17

Daily Php Development တွင် Database စွမ်းဆောင်ရည်ပြ problems နာများသည်အထူးသဖြင့်အထူးသဖြင့်ပြတ်ပြတ်သားသားပြတ်တောင်းပြတ်တောင်းပြတ်တောင်းပြတ်တောင်းပြ problems နာများဖြစ်လေ့ရှိသည်။ ကံကောင်းထောက်မစွာပင် PHP ၏ MySQLI extension သည် MySQLI :: Debug ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်အသေးစိတ်ဒေတာဘေ့စ်စစ်ဆင်ရေးမှတ်တမ်းများကိုအထောက်အကူပြုနိုင်ပြီး,

1 ။ 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 ကိုခွင့်ပြုသည်။

2 ။ debugging ဖွင့်လှစ်ဘို့ prerequisite

MySQLI :: Debug ကို အသုံးပြုရန်သင်သေချာစေရန်လိုအပ်သည်။

  1. PHP MySQLND driver ကိုအသုံးပြုသည် Phpinfo ကို ကြည့်ခြင်းဖြင့်သင်အတည်ပြုနိုင်သည်။

     phpinfo();
    

    MySQLND ကိုရှာဖွေပါ, အကယ်. သင်သည်အောက်ပါစကားလုံးများကိုမြင်လျှင်,

     Client API library version => mysqlnd 8.x.x
    
  2. Debugging Enable လုပ်ရန် Php.ini configuration ကိုပြင်ဆင်ပါ

     mysqlnd.debug = "/tmp/mysqlnd.log"
    

    ပြုပြင်မွမ်းမံပြီးနောက် PHP-FPM သို့မဟုတ် Apache 0 န်ဆောင်မှုကိုပြန်လည်စတင်ပါ။

3 ။ MySQLI :: Debug ကို ဘယ်လိုသုံးရမလဲ။

သင်၏ 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 ဖိုင်ကိုသတ်မှတ်သည်

4 ။ Debug Log ကိုခွဲခြမ်းစိတ်ဖြာပါ

Debug Log သည်သင် သတ်မှတ်ထားသော တည်နေရာ ( /tmp/mysqlnd.log ကဲ့သို့သော ) ကို output လုပ်လိမ့်မည်။

 tail -f /tmp/mysqlnd.log

ဘုံဆန်းစစ်ချက်အချက်များပါဝင်သည်:

  • connection အချိန်ကိုစားသုံးပါသလား

  • စုံစမ်းမှုကြေညာချက်အကြိမ်ကြိမ်ကွပ်မျက်ခံရသည်ဖြစ်စေ

  • cache hit ရှိလျှင်မေးမြန်းခြင်း

  • နှေးကွေးသောစုံစမ်းမှုသည်အချိန်ယူရသည်

SQL ထုတ်ပြန်ချက်များကိုရှင်းပြခြင်းအားဖြင့်သင်အညွှန်းကိန်းကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန်သို့မဟုတ်စားပွဲအပြည့်ကိုစကင်ဖတ်စစ်ဆေးရန်သင်လိုအပ်သည်ကိုပိုမိုတိကျစွာဆုံးဖြတ်နိုင်သည်။

5 ။ နှေးကွေးသောစုံစမ်းမှုမှတ်တမ်းများနှင့်အတူပေါင်းစပ်အတွက်နောက်ထပ် positioning

MySQLI :: Debug သည် ကြွယ်ဝသော client သတင်းအချက်အလက်များကိုပေးသည်။

 SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

MySQLI :: Debug 'S သုံးစွဲသူသစ်လုံးများပေါင်းစပ်ထားသောနှေးကွေးသောစုံစမ်းမှုမှတ်တမ်းများကို MySQUS ၏သုံးစွဲသူသစ်လုံးများနှင့်ပေါင်းစပ်ခြင်းများကိုလျင်မြန်စွာရှာဖွေရန်နှစ်ဖက်စလုံးမှပူးပေါင်းဆောင်ရွက်မှုကိုခွဲခြမ်းစိတ်ဖြာနိုင်သည်။

6 ။ debugging ပြီးသွားပြီးနောက် debugging ပိတ်ထားသည်

စွမ်းဆောင်ရည်နှင့်လုံခြုံရေးအကြောင်းပြချက်များအတွက် Debugging ကိုဖွံ့ဖြိုးရေးသို့မဟုတ်စမ်းသပ်ခြင်းပတ် 0 န်းကျင်များတွင်အသုံးပြုသင့်သည်။ debugging ပြီးနောက်ပိတ်ရန်သတိရပါ။

 mysqli::debug(""); // debugging parameters တွေကို shutdown နှင့်တန်းတူရှင်းလင်းပါ

7 ။ အကျဉ်းချုပ်

MySQLI :: Debug မှတစ်ဆင့် Debug မှတစ်ဆင့်ကျွန်ုပ်တို့သည် PHP scripts နှင့် MySQL တို့အကြားအပြန်အလှန်ဆက်သွယ်မှုကိုတိကျစွာမှတ်တမ်းတင်နိုင်ပြီး database connection ပြ problems နာများနှင့်စုံစမ်းမှုစစ်ဆေးခြင်းကိုနှေးကွေးစေခြင်းနှင့်နှေးကွေးခြင်းခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်အလွန်တန်ဖိုးရှိသည်။ ဖွံ့ဖြိုးတိုးတက်မှုအဆင့်တွင်ဤကိရိယာကိုကောင်းစွာအသုံးပြုခြင်းသည်စတင်မိတ်ဆက်ပြီးနောက် "သတ္တုတွင်းကိုအရှိန်မြှင့်ခြင်း" ဖြစ်နိုင်ခြေကိုများစွာလျှော့ချနိုင်သည်။