လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP script output ထုတ်ခြင်းပြ Procput နာများကိုမည်သို့ရှောင်ရှားနိုင်မည်နည်း။ ဖြေရှင်းချက်မျှဝေခြင်း

PHP script output ထုတ်ခြင်းပြ Procput နာများကိုမည်သို့ရှောင်ရှားနိုင်မည်နည်း။ ဖြေရှင်းချက်မျှဝေခြင်း

gitbox 2025-09-02

PHP script output ထုတ်ခြင်းပြ Procput နာများကိုမည်သို့ရှောင်ရှားနိုင်မည်နည်း။ ဖြေရှင်းချက်မျှဝေခြင်း

PHP တွင် command line scripts များကိုရေးသောအခါ, သင်သည် output contents ကိုရှုပ်ထွေးစေခြင်းသို့မဟုတ်မျှော်လင့်ချက်များနှင့်အညီမကိုက်ညီစေရန်အတွက် stream_isatty ပြန်လည်ရောက်ရှိသည့်အခြေအနေကိုပြန်လည်ရောက်ရှိသည့်အခြေအနေကိုသင်ကြုံတွေ့ရနိုင်သည်။ ဤပြ problem နာသည်များသောအားဖြင့်ကွဲပြားခြားနားသောပတ်ဝန်းကျင်တွင်ကွဲပြားခြားနားသောပတ်ဝန်းကျင်တွင်ကွဲပြားခြားနားစွာလုပ်ဆောင်သောအခါအထူးသဖြင့်အချို့သောဆိပ်ကမ်းများသို့မဟုတ်ပိုက်လိုင်းများမှတစ်ဆင့်ထုတ်ယူသောအခါ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အဓိကအကြောင်းရင်းများကိုလေ့လာပြီး developer များထုတ်လုပ်မှုပြ problems နာများကိုရှောင်ရှားရန်ကူညီရန်အချို့သောဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။

1 ။ ပြ problem နာနောက်ခံ

Steam_isatty သည် PHP တွင်စီးဆင်းမှုကို terminal တစ်ခုနှင့်ဆက်စပ်မှုရှိမရှိရှာဖွေရန် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">stream_isatty</span></span><span> ( resource </span><span><span class="hljs-variable">$stream</span></span><span> )
</span></span>

ဤလုပ်ဆောင်မှုသည် stream အရင်းအမြစ်ကို parameter တစ်ခုအဖြစ်လက်ခံပြီး stream terminal device နှင့်ချိတ်ဆက်ထားခြင်းရှိမရှိဆုံးဖြတ်သည်။ အကယ်. စမ်းချောင်းသည် terminal device မှတဆင့် output သည် output ကို မှေးမှိန် ပါကပြန်ပြောင်းတန်ဖိုးသည် မှန်ကန် သည်။

stream_isatty ပြန်ရောက်သည့်အခါ PHP script ၏ output ကို terminal တစ်ခုသို့တိုက်ရိုက်မရေးနိုင်သော်လည်းပိုက်လိုင်းများ, ဖိုင်များသို့မဟုတ်အခြားနည်းလမ်းများဖြင့်ဖြတ်သန်းသွားနိုင်သည်။ ယခုအချိန်တွင် PHP ဇာတ်ညွှန်းသည် output method ပေါ် မူတည်. output ကို (ဥပမာ, အရောင်ဖြင့်စာသား) သို့မဟုတ် output control control format ကို format လုပ်နိုင်သည်။

သင့်လျော်စွာပြုပြင်ခြင်းမရှိပါက output သည်ရှုပ်ထွေးမှုဖြစ်လာနိုင်သည်, အထူးသဖြင့် terminal ကိုမပါ 0 င်ပါကအရောင်ထိန်းချုပ်မှုဇာတ်ကောင်များသို့မဟုတ် format ည့်သည်များသို့မဟုတ်မမြင်နိုင်သောဇာတ်ကောင်များအဖြစ်ပေါ်ပေါက်လာနိုင်သည်။

2 ။ ပြ the နာ၏အကြောင်းရင်းများ

  1. command line output များကို format လုပ်ထားတဲ့ဇာတ်ကောင်များ -
    The Echo သို့မဟုတ် Printf ပံ့ပိုးမှုကဲ့သို့သော command-line tools များသည်အရောင်စာသားနှင့်စာလုံးစောင်းနှင့်အခြားပုံစံများအပါအ 0 င် format လုပ်ထားသော output ကိုပုံစံချမှတ်ခဲ့သည်။ ဤ format ချထားသောအက္ခရာများကိုပံ့ပိုးထားသောဆိပ်ကမ်းများပေါ်တွင်မှန်ကန်စွာပြသနိုင်သည်။

  2. terminal ပတ် 0 န်းကျင်အလိုအလျောက်ရှာဖွေတွေ့ရှိခြင်း -
    Terminal ပတ်ဝန်းကျင်တွင် PHP သည်အရောင်စာသားကိုအလိုအလျောက်စစ်ဆေးနိုင်ပြီးမှန်ကန်စွာစစ်ဆေးနိုင်သည်။ သို့သော် script output ကိုဖိုင် (သို့) ပိုက်လိုင်းကိုလွှဲပြောင်းပေးသည့်အခါ terminal ပတ်ဝန်းကျင်ဆိုင်ရာသတင်းအချက်အလက်များသည်ပျောက်ဆုံးသွားပြီး Stream_isatty သည်မှားယွင်းစွာပြန်လည်ရောက်ရှိလာခြင်းမရှိသေးပါ။

  3. Cross-platform
    ကွဲပြားခြားနားသော operating systems terminals နှင့် streams ကွဲပြားခြားနားကိုင်တွယ်။ ဥပမာအားဖြင့်, Windows တွင် Terminal များသည် Ansi မှလွတ်မြောက်မှုပာကိုမထောက်ပံ့နိုင်သော်လည်း Linux (သို့) MacOS တို့တွင်ဤပာကိုများသောအားဖြင့်ထောက်ပံ့သည်။ ဤနည်းအားဖြင့်မတူညီသောပလက်ဖောင်းများအကြားသဟဇာတဖြစ်နေသောပြ issues နာများသည်ကိုက်ညီမှုမရှိသော output format များကိုဖြစ်ပေါ်စေနိုင်သည်။

3 ။ ဖြေရှင်းနည်း

output ပြ problem နာကိုဖြေရှင်းရန်အတွက် stream_isattenty ပြန်ရောက်သည့်အခါအောက်ပါဖြေရှင်းနည်းများကိုကျွန်ုပ်တို့ကျင့်သုံးနိုင်သည်။

1 ။ ဒါဟာ terminal ပတ်ဝန်းကျင်ဖြစ်ကြောင်းကိုစစ်ဆေးပါ

တိုက်ရိုက်နည်းလမ်းမှာလက်ရှိ script ၏ output ၏ output ကိုစီးဆင်းမှုသည် terminal နှင့်ဆက်စပ်မှုရှိမရှိရှာဖွေရန် stream_isatty ကို အသုံးပြုရန်ဖြစ်သည်။ ၎င်းသည် terminal output ဖြစ်လျှင်အရောင်နှင့် format character များကိုဆက်လက်အသုံးပြုနိုင်သည်။ ၎င်းသည် terminal output မဟုတ်လျှင်ဤပုံစံစာလုံးများကိုရှောင်ပါ။ ၎င်းကိုအောက်ပါကုဒ်များဖြင့်ကိုင်တွယ်နိုင်သည်။

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_isatty</span></span><span>(STDOUT)) {
    </span><span><span class="hljs-comment">// terminal ကိုပတ်ဝန်းကျင်,အရောင် output ကိုခွင့်ပြုပါ</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\033[32mဒါကအစိမ်းရောင်စာသားပါ\033[0m\n"</span></span><span>; </span><span><span class="hljs-comment">// ANSIအရောင်ကုဒ်</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-comment">// 非terminal ကိုပတ်ဝန်းကျင်,ထိန်းချုပ်မှုအက္ခရာများ outputting ရှောင်ကြဉ်ပါ</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဒါကပုံမှန်စာသားပါ\n"</span></span><span>;
}
</span></span>

ဤချဉ်းကပ်မှုသည်ပြ the နာကိုအချို့သောအခြေအနေများတွင်ဖြေရှင်းနိုင်သည်။ ပိုက်လိုင်းသို့မဟုတ်ဖိုင် output ကိုပြသသည့်အခါထိန်းချုပ်မှုဇာတ်ကောင်များမရှိပါ။

2 ။ output format လုပ်ထားရန်ပြင်ပစာကြည့်တိုက်များကိုအသုံးပြုပါ

အချို့သော PHP Libraries များသည်ကျွန်ုပ်တို့အားပိုမိုကောင်းမွန်သောထိန်းချုပ်မှုအဆင့်လိုင်းထုတ်လုပ်မှုကိုအထောက်အကူပြုနိုင်ပြီး format ်ဌာန်းထားသောဇာတ်ကောင်များနှင့်ပုံစံချခြင်းများကိုအလိုအလျောက်ရှာဖွေတွေ့ရှိခြင်းအပါအ 0 င်ထိန်းချုပ်မှုဆိုင်ရာလိုင်းထုတ်ပေးမှုကိုကျွန်ုပ်တို့ကူညီနိုင်သည်။ ဥပမာအားဖြင့်, Symfony / Console သည် command line ၏ပုံစံချထားသော output ကိုအလိုအလျောက်စီမံနိုင်သည့် Symfony / Console သည်ကြွယ်ဝသော output control function များကိုထောက်ပံ့ပေးသည်။

 <span><span>composer require symfony/console
</span></span>

ထို့နောက်၎င်းကို PHP script များတွင်သုံးပါ။

 <span><span><span class="hljs-keyword">use</span></span><span> </span><span><span class="hljs-title">Symfony</span></span><span>\</span><span><span class="hljs-title">Component</span></span><span>\</span><span><span class="hljs-title">Console</span></span><span>\</span><span><span class="hljs-title">Output</span></span><span>\</span><span><span class="hljs-title">ConsoleOutput</span></span><span>;

</span><span><span class="hljs-variable">$output</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">ConsoleOutput</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$output</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">isVerbose</span></span><span>()) {
    </span><span><span class="hljs-variable">$output</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">writeln</span></span><span>(</span><span><span class="hljs-string">"&lt;info&gt;ဒါကအစိမ်းရောင်စာသားပါ&lt;/info&gt;"</span></span><span>); </span><span><span class="hljs-comment">// အလိုအလျောက်အရောင်များကိုထည့်ပါ</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$output</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">writeln</span></span><span>(</span><span><span class="hljs-string">"ဒါကပုံမှန်စာသားပါ"</span></span><span>);
}
</span></span>

SymFony Console စာကြည့်တိုက်သည်ပုံစံချထားသော output ကိုမတူညီသောပတ် 0 န်းကျင်တွင်အသုံးချခြင်းရှိမရှိအလိုအလျောက်ဆုံးဖြတ်နိုင်သည်။

3 ။ ကိုယ်တိုင် output ၏ format ကိုထိန်းချုပ်

အကယ်. သင်သည်ပြင်ပစာကြည့်တိုက်များကိုအသုံးမပြုလိုပါကစာသား၏ပုံစံချခြင်းကိုကိုယ်တိုင်ထိန်းချုပ်နိုင်သည်။ အချို့ဖြစ်ရပ်များတွင်သင်သည်ရှင်းလင်းသောစာသားကို format မရေးဆွဲဘဲသာ output လုပ်လိုပေမည်။

 <span><span><span class="hljs-variable">$isTerminal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_isatty</span></span><span>(STDOUT);
</span><span><span class="hljs-variable">$colorStart</span></span><span> = </span><span><span class="hljs-variable">$isTerminal</span></span><span> ? </span><span><span class="hljs-string">"\033[32m"</span></span><span> : </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$colorEnd</span></span><span> = </span><span><span class="hljs-variable">$isTerminal</span></span><span> ? </span><span><span class="hljs-string">"\033[0m"</span></span><span> : </span><span><span class="hljs-string">""</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$colorStart</span></span><span> . </span><span><span class="hljs-string">"ဒါကအစိမ်းရောင်စာသားပါ"</span></span><span> . </span><span><span class="hljs-variable">$colorEnd</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>

ဤနည်းအားဖြင့် terminal နှင့် terminal non-terminal မဟုတ်သောပတ်ဝန်းကျင်တွင် script ၏ output ကိုအပြုအမူများကိုတိကျစွာထိန်းချုပ်နိုင်သည်။

4 ။ debugging နှင့် logging

အကယ်. ပြ the နာသည်ရှုပ်ထွေးသောသို့မဟုတ်ပတ်ဝန်းကျင်ပြင်ဆင်မှုသည်မသေချာလျှင်ပြ the နာကိုဆန်းစစ်ရန်ကူညီရန် Debug log ကိုသုံးနိုင်သည်။ အချို့သောပတ်ဝန်းကျင်ဆိုင်ရာအချက်အလက်များကိုထုတ်ယူခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် PHP script လည်ပတ်မှု၏အခြေအနေကိုကျွန်ုပ်တို့နားလည်နိုင်သည်။

 <span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">stream_isatty</span></span><span>(STDOUT)); </span><span><span class="hljs-comment">// output ကိုစီးသည် terminal နှင့်ဆက်စပ်မှုရှိမရှိစစ်ဆေးပါ</span></span><span>
</span></span>

၎င်းသည်ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်းထုတ်လုပ်မှု၏သတ်သတ်မှတ်မှတ်အပြုအမူကိုရှင်းလင်းရန်ကူညီသည်။

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

stream_isattenty ပြန်လာသည့်အခါ PHP scripts များသည် output formating ပြ issues နာများကိုတွေ့ကြုံခံစားနိုင်သည်။ ဤပြ problems နာများကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည် Encover environment ကိုရှာဖွေခြင်း, ပြင်ပစာကြည့်တိုက်များအသုံးပြုခြင်းသို့မဟုတ်ထုတ်ယူခြင်းပုံစံကိုကိုယ်တိုင်ထိန်းချုပ်ခြင်းဖြင့် script နှင့်လိုက်လျောညီထွေဖြစ်စေနိုင်သည်။ ပတ် 0 န်းကျင်ကိုအကဲဖြတ်ခြင်းဖြင့်အရောင်ပြောင်းသွားခြင်းကိုအသုံးပြုခြင်း,

ဤနည်းလမ်းများမှတစ်ဆင့် command line script များကိုတီထွင်သည့်အခါကျွန်ုပ်တို့သည်မတူညီသော output ပတ် 0 န်းကျင်ကိုလိုက်လျောညီထွေဖြစ်အောင်မလုပ်နိုင်ပါ။