PHP တွင် လူသတ်မှု function ကိုများသောအားဖြင့်သတ်မှတ်ထားသောလုပ်ငန်းစဉ်သို့အချက်ပြမှုများကိုပို့ရန်အသုံးပြုသည်။ ဖွံ့ဖြိုးမှုစဉ်အတွင်းအချက်ပြ debug mode တွင်အချက်ပြမှုတွင်အချက်ပြမှုနှင့်ဆက်စပ်သောအမှားမက်ဆေ့ခ်ျများပေးပို့ခြင်းလုပ်ငန်းစဉ်ကိုကြည့်ရှုရန်လိုအပ်သော်လည်းအလားအလာရှိသောပြ problems နာများကိုဖြေရှင်းရန်ကူညီသည်။ debugging mode ကို output debugging information in debugging information in debugging information informing ကိုပေါင်းစပ်ခြင်းကပြ problems နာများကိုဖြေရှင်းရန်ကျွန်ုပ်တို့၏ထိရောက်မှုကိုများစွာတိုးတက်စေနိုင်သည်။
ဤဆောင်းပါးသည် PHP Billion တွင်အသေးစိတ်အချက်အလက်များကိုပိုမိုရှင်းလင်းပြတ်သားစွာပြုလုပ်နိုင်သည်။ PHP Billion Information သည်လုပ်ငန်းစဉ်အချက်ပြမှုများကိုပိုမိုတိကျစွာထိန်းချုပ်ရန်အတွက် developer များကိုပိုမိုတိကျစွာထိန်းချုပ်ရန်ကူညီရန် Debugging Mode ဖြင့်ပြုလုပ်နိုင်သည်။
PHP Bill Function ကိုလုပ်ငန်းစဉ်တစ်ခုသို့အချက်ပြများပို့ရန်အသုံးပြုသည်။ ၎င်း၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">kill</span></span><span> ( </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$pid</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$signal</span></span><span> )
</span></span>
$ PID သည်ပစ်မှတ်လုပ်ငန်းစဉ်၏ ID ဖြစ်သည်။
$ signal သည် Sigterm (ရပ်စဲခြင်းဆိုင်ရာအချက်ပြ) သို့မဟုတ် sigkill ကဲ့သို့သော signal နံပါတ်ဖြစ်သည်။
များသောအားဖြင့်, လူသတ်မှု function ကို process control, task scheduling နှင့်အခြားအခြေအနေများတွင်အသုံးပြုသည်။ အကယ် . ဒေါ်လာ PID သည် မတည်ရှိပါကသို့မဟုတ် signal ကိုခွင့်ပြုချက်မရှိဘဲပေးပို့ခြင်းကိုပေးပို့ပါက မှားလိမ့်မည် ။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အထူးသဖြင့် Multi-process လုပ်ငန်းများသို့ရောက်သောအခါအောက်ပါပြ problems နာများကိုကျွန်ုပ်တို့ကြုံတွေ့ရနိုင်သည်။
လုပ်ငန်းစဉ် ID သည်မမှန်ကန်ပါသို့မဟုတ်ဖြစ်စဉ်ကိုမတည်ရှိပါ။
အချက်ပြမှုများကိုပေးပို့သည့်အခါခွင့်ပြုချက်မလုံလောက်;
အဆိုပါ signal ကိုမှန်ကန်စွာပြုပြင်မွမ်းမံသို့မဟုတ်လွန်မထားဘူး။
ဤပြ problems နာများသည်အထူးသဖြင့်အမှားအချက်အလက်မလုံလောက်ပါကအထူးသဖြင့်အမှားရှာဖွေရန်ခက်ခဲလေ့ရှိသည်။ ထို့ကြောင့် Debug Mode ကိုဖွင့်ခြင်းအားဖြင့် developer များသည်အမှားတစ်ခုဖြစ်လာသောအခါပြ problems နာများကိုပိုမိုလွယ်ကူစွာရှာဖွေရန်ပိုမိုလွယ်ကူစေသည်။
PHP သည် debugging level ကိုသတ်မှတ်နိုင်သော အမှားအယွင်း တစ်ခုလုပ်ဆောင်သည်။ Browser (သို့) log file သို့ debug အချက်အလက်ကိုထုတ်ယူခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် Kill function ကိုခေါ်သည့်အခါအသေးစိတ်အမှားအချက်အလက်များကိုကြည့်ရှုနိုင်သည်။
<span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span></span>
ဤကုဒ်သည် PHP အမှားအယွင်းများနှင့်သတိပေးချက်များအားလုံးကိုပြသပြီးဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တွင်အသုံးပြုရန်သင့်လျော်သည်။
Kill function ၏ပြန်လာတန်ဖိုးသည် signal ကိုအောင်မြင်စွာပို့သည်ကိုကျွန်ုပ်တို့အားပြောပြလိမ့်မည်။ အကယ်. ၎င်းသည်ပျက်ကွက်ပါကကျွန်ုပ်တို့သည်အမှားအယွင်းသတင်းအချက်အလက်များရရန် အမှားအယွင်းများ ကို သုံးနိုင်သည်။
<span><span><span class="hljs-variable">$pid</span></span><span> = </span><span><span class="hljs-number">1234</span></span><span>; </span><span><span class="hljs-comment">// ဤသည်ပစ်မှတ်ဖြစ်စဉ်ကိုယူဆ PID</span></span><span>
</span><span><span class="hljs-variable">$signal</span></span><span> = SIGTERM;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">kill</span></span><span>(</span><span><span class="hljs-variable">$pid</span></span><span>, </span><span><span class="hljs-variable">$signal</span></span><span>)) {
</span><span><span class="hljs-variable">$error</span></span><span> = </span><span><span class="hljs-title function_ invoke__">posix_get_last_error</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Failed to send signal to process <span class="hljs-subst">$pid</span></span></span><span>. Error: </span><span><span class="hljs-subst">$error</span></span><span>\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Signal <span class="hljs-subst">$signal</span></span></span><span> successfully sent to process </span><span><span class="hljs-subst">$pid</span></span><span>\n";
}
</span></span>
ဤနည်းလမ်းသည်မည်သည့်လုပ်ငန်းစဉ်၏ signal ရိယာကူးစက်ခြင်းနှင့်အမှားအယွင်းများ၏သတ်သတ်မှတ်မှတ်အကြောင်းရင်းကိုရှင်းရှင်းလင်းလင်းသိရှိနိုင်သည်။
browser ကို output လုပ်ရန်အပြင် Debug Information ကို log file သို့လည်းကျွန်ုပ်တို့ရေးနိုင်သည်။
<span><span><span class="hljs-variable">$logFile</span></span><span> = </span><span><span class="hljs-string">'/path/to/debug.log'</span></span><span>;
</span><span><span class="hljs-variable">$pid</span></span><span> = </span><span><span class="hljs-number">1234</span></span><span>;
</span><span><span class="hljs-variable">$signal</span></span><span> = SIGTERM;
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// output ကို buffering စတင်ပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">kill</span></span><span>(</span><span><span class="hljs-variable">$pid</span></span><span>, </span><span><span class="hljs-variable">$signal</span></span><span>)) {
</span><span><span class="hljs-variable">$error</span></span><span> = </span><span><span class="hljs-title function_ invoke__">posix_get_last_error</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Failed to send signal to process <span class="hljs-subst">$pid</span></span></span><span>. Error: </span><span><span class="hljs-subst">$error</span></span><span>\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Signal <span class="hljs-subst">$signal</span></span></span><span> successfully sent to process </span><span><span class="hljs-subst">$pid</span></span><span>\n";
}
</span><span><span class="hljs-variable">$debugInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_clean</span></span><span>(); </span><span><span class="hljs-comment">// ကြားခံအကြောင်းအရာနှင့်ရှင်းလင်းပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$logFile</span></span><span>, </span><span><span class="hljs-variable">$debugInfo</span></span><span>, FILE_APPEND); </span><span><span class="hljs-comment">// ဖိုင်များကိုမှတ်တမ်းတင်ရန်ရေးပါ</span></span><span>
</span></span>
ဤနည်းလမ်းသည်သတင်းအချက်အလက်များကို debugging အချက်အလက်များကိုဖိုင်တစ်ခုထဲသို့စဉ်ဆက်မပြတ်သိမ်းဆည်းနိုင်ပြီးနောက်မှကြည့်ရှုရန်ပိုမိုလွယ်ကူစေသည်။
Code Reusability ကိုတိုးတက်စေရန်အတွက်ကျွန်ုပ်တို့သည်နေရာအမျိုးမျိုးတွင်ခေါ်ဆိုနိုင်ရန်အတွက် debug အချက်အလက်များကို function တစ်ခုထဲသို့ထည့်သွင်းစဉ်းစားနိုင်သည်။
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">debugKill</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$pid</span></span></span><span>, </span><span><span class="hljs-variable">$signal</span></span><span>) {
</span><span><span class="hljs-variable">$logFile</span></span><span> = </span><span><span class="hljs-string">'/path/to/debug.log'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">kill</span></span><span>(</span><span><span class="hljs-variable">$pid</span></span><span>, </span><span><span class="hljs-variable">$signal</span></span><span>)) {
</span><span><span class="hljs-variable">$error</span></span><span> = </span><span><span class="hljs-title function_ invoke__">posix_get_last_error</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Failed to send signal to process <span class="hljs-subst">$pid</span></span></span><span>. Error: </span><span><span class="hljs-subst">$error</span></span><span>\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Signal <span class="hljs-subst">$signal</span></span></span><span> successfully sent to process </span><span><span class="hljs-subst">$pid</span></span><span>\n";
}
</span><span><span class="hljs-variable">$debugInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_clean</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$logFile</span></span><span>, </span><span><span class="hljs-variable">$debugInfo</span></span><span>, FILE_APPEND);
}
</span><span><span class="hljs-comment">// Call ဥပမာ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">debugKill</span></span><span>(</span><span><span class="hljs-number">1234</span></span><span>, SIGTERM);
</span></span>
ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည် debug code ကိုထပ်ခါတလဲလဲရေးသားခြင်းမရှိဘဲမည်သည့်အချိန်တွင်မဆိုကုဒ်နံပါတ်များကို code in debug အချက်အလက်ကိုထည့်သွင်းနိုင်သည်။
ခွင့်ပြုချက်ပြ issues နာများကိုစစ်ဆေးပါ ။ သင်၏ PHP script သည်အထူးသဖြင့်ခွင့်ပြုချက်ပြ issues နာများမှာအမှားအယွင်းများသောအရင်းအမြစ်များဖြစ်သော Target Process သို့ဆိုင်းဘုတ်များပေးပို့ရန်လုံလောက်သောခွင့်ပြုချက်တောင်းခံပါစေ။
ပစ်မှတ်လုပ်ငန်းစဉ်ဆက်ရှိနေခြင်းရှိမရှိစစ်ဆေး ပါ ။ ဤအချိန်တွင်မမှန်ကန်သောအချက်ပြမှုများကိုမပို့ရန်လုပ်ငန်းစဉ်အခြေအနေကိုစစ်ဆေးနိုင်သည်။
ကောင်းမွန်သောမှတ်တမ်းများကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်း - debugging အချက်အလက်များစွာသည် log files များကိုလျင်မြန်စွာကြီးထွားစေနိုင်သည်။ Logs ကိုပုံမှန်သန့်ရှင်းရေးလုပ်ပါသို့မဟုတ် Disk နေရာအပြည့်ကိုရှောင်ရှားရန် log rotation ပေါ်လစီကိုသတ်မှတ်ပါ။
ဖွံ့ဖြိုးရေးနှင့်ထုတ်လုပ်မှုပတ် 0 န်းကျင်များအကြားခွဲခြားခြင်း - ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်အမှားအယွင်းများပြသသည့်အမှားအယွင်းများကိုပိတ်ရန်နှင့်လုံခြုံရေးနှင့်စွမ်းဆောင်ရည်ကိုသေချာစေရန်အတွက်အရေးကြီးသောမှတ်တမ်းအချက်အလက်များကိုသာရေးရန်အကြံပြုပါသည်။