PHP တွင် function stream_isattenty () ကို ပေးထားသောစီးဆင်းမှုသည် terminal (tty) device တစ်ခုရှိမရှိရှာဖွေရန်အသုံးပြုသည်။ terminal device တစ်ခုသည်များသောအားဖြင့်ဖိုင်များ, ပိုက်လိုင်းများသို့မဟုတ်ကွန်ယက်ချိတ်ဆက်မှုများကဲ့သို့သောအခြားချောင်းများမဟုတ်ဘဲအခြား command line window သို့မဟုတ် console ကိုရည်ညွှန်းသည်။
<?php
// နမူနာ:ပုံမှန် output ကို terminal ကိုရှိမရှိစစ်ဆေးပါ
if (stream_isatty(STDOUT)) {
echo "ဒါက terminal ကိုစီးဖြစ်ပါတယ်\n";
} else {
echo "ဒါက terminal ကိုစီးမဟုတ်ပါဘူး\n";
}
?>
သို့သော်သင်၏ code တွင် terminal non-terminal non-stream တစ်ခုတွင်သင်ခေါ်ဆိုပါ က function သည်ပုံမှန်ဒီဇိုင်းပြသသည့်ပုံစံဖြစ်သော မှားယွင်းသောမှားယွင်းမှုကို အမြဲတမ်းပြန်ပို့လိမ့်မည်။ ဥပမာအားဖြင့် File Streams, HTTP တောင်းဆိုမှုလွှင့်ခြင်း, ပိုက်လိုင်းစီးများစသည်တို့သည် terminal မဟုတ်ဘဲရှာဖွေတွေ့ရှိရလဒ်မှာမှားယွင်းသောကြောင့်ဖြစ်သည်။
stream_isatty () function ကို အခြေခံ. function ကိုအကောင်အထည်ဖော်ခြင်းက system calls ( isix / linux အောက်ရှိ unix / linux အောက်ရှိ unix / linux အောက်ရှိ unix / linux အောက်ရှိ System Calls) တွင်ပါ 0 င်သည်။ တိကျသောအကြောင်းပြချက်များပါဝင်သည်:
Terminal မဟုတ်သောကိရိယာများတွင် terminal attribute များမရှိပါ Terminal device နှင့်တိုက်ရိုက်ချိတ်ဆက်ထားသောဖိုင်များကိုသာဖိုင်မှတ်တမ်းများနှင့်အခြားဖိုင်များ (ပိုက်လိုင်း, ကွန်ယက်များ, ဖိုင်များစသည်တို့အပါအ 0 င်အခြားဖိုင်များအဖြစ်အသိအမှတ်ပြုခံရလိမ့်မည်။
streaming အရင်းအမြစ်များ၏ကွဲပြားခြားနားသောအမျိုးအစားများ
steam_isatty () file streams, network streams များ, စံနှုန်းများနှင့်ရလဒ်များစသည့်စီးဆင်းမှုအရင်းအမြစ်များကိုလက်ခံရရှိသည် ။
<?php
$file = fopen('gitbox.net/path/to/file.txt', 'r');
var_dump(stream_isatty($file)); // အမြဲတမ်းပြန်လာပါ false,ဘာဖြစ်လို့လဲဆိုတော့ဖိုင်ဟာ terminal မဟုတ်ပါဘူး
fclose($file);
?>
ဖြေရှင်းချက် -
terminal device ကိုသင်အမှန်တကယ်အကဲဖြတ်ရန်သို့မဟုတ်ချောင်း၏တရားဝင်မှုကိုစစ်ဆေးရန်လိုအပ်ကြောင်းသေချာအောင်လုပ်ပါ။ command line ပတ် 0 န်းကျင်တွင် scription သည် script သည် script ကိုဖွင့်နေသည်ကိုသင်ဆုံးဖြတ်ပါက php_sapi သို့မဟုတ်အခြားနည်းလမ်းများကို stream_isatty () အစားသုံးနိုင်သည်။
php script.php | grep 'something'
ပိုက်လိုင်းသည်ပုံမှန် output ကို non-terminal non-spream ဖြစ်ရန် နှင့် stream_isatty (stdout) သည် မှား သည်။
ဖြေရှင်းချက် -
ဤကဲ့သို့သောဇာတ်လမ်းမျိုးအတွက်သင်သည်ပတ် 0 န်းကျင်ဆိုင်ရာအပြုအမူကိုထိန်းချုပ်ရန်သို့မဟုတ် terminal non-terminal streams များကိုလိုက်လျောညီထွေဖြစ်စေမည့်ပတ် 0 န်းကျင် variable များကိုသို့မဟုတ် command line parameters များကိုသုံးနိုင်သည်။
<?php
var_dump(stream_isatty(fopen('gitbox.net/api/endpoint', 'r')));
ဤသည်မမှန်ကန်သောအသုံးပြုမှုဖြစ်သည်။ HTTP တောင်းဆိုမှုများသည် terminal streams များမဟုတ်ဘဲ မှားယွင်းသော ပြန်လာရမည်။
သင်၏ရည်မှန်းချက်သည် command line mode နှင့် web mode ကိုခွဲခြားရန်ဖြစ်သည်ဆိုပါကအသုံးပြုရန်အကြံပြုပါသည်။
<?php
if (php_sapi_name() === 'cli') {
echo "command line mode ကို\n";
} else {
echo "Web ဆာဗာပုံစံ\n";
}
?>
သို့မဟုတ်:
<?php
if (PHP_SAPI === 'cli') {
echo "command line mode ကို\n";
} else {
echo "Web ဆာဗာပုံစံ\n";
}
?>
ဤနှစ်ခုသည်ပိုမိုလုံခြုံမှုရှိပြီး stream_isatty () ကို အသုံးပြုခြင်းထက်မျှော်လင့်ထားသည့်အတိုင်းဖြစ်သည်။
Steam_isatty () သည် စစ်မှန်သော terminal device streams များအတွက်သာ စစ်မှန်သော ပြန်လာလိမ့်မည်။
Terminal Non-terminal streams (ဖိုင်များ, ကွန်ရက်များ, ပိုက်လိုင်းများစသဖြင့်) ခေါ်ဆိုခြင်းက မလွှဲ မရှောင်မလွှဲမရှောင်ပြန်လာလိမ့်မည်။ ၎င်းသည်ပုံမှန်အပြုအမူမဟုတ်ဘဲအမှားမဟုတ်ပါ။
ဤလုပ်ဆောင်မှုကိုအလွဲသုံးစားပြုသည့်အခြေအနေကိုအလွဲသုံးစားပြုသည့်အခြေအနေများကိုမကြာခဏအသုံးပြုလေ့ရှိသည်။ ပိုမိုသင့်လျော်သောတရားစီရင်ခြင်းနည်းလမ်းကိုသုံးရန်အကြံပြုသည် ။
မူရင်းဒီဇိုင်းရည်ရွယ်ချက်နှင့် stream_isatty () လျှောက်လွှာကိုအသုံးပြုခြင်း () မမှန်ကန်သောခေါ်ဆိုမှုများကိုရှောင်ရှားခြင်း () ကိုအသုံးပြုခြင်းကိုနားလည်ခြင်းသည်သင်၏ PHP scripts များကိုပိုမိုအားကောင်းစေနိုင်သည်။