လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> stream_get_filters နှင့် stream_set_set_blocking မှတဆင့်စီးဆင်းမှုထိရောက်မှုကိုတိုးတက်အောင်ဘယ်လိုလုပ်ရမလဲ။

stream_get_filters နှင့် stream_set_set_blocking မှတဆင့်စီးဆင်းမှုထိရောက်မှုကိုတိုးတက်အောင်ဘယ်လိုလုပ်ရမလဲ။

gitbox 2025-05-28

PHP တွင်ဖိုင်များ, ကွန်ယက်များနှင့်မှတ်ဉာဏ်ကဲ့သို့သောအရင်းအမြစ်များကိုလုပ်ဆောင်ရန်အတွက်စည်းလုံးညီညွတ်သော interface တစ်ခုဖြစ်သည်။ လုပ်ငန်းလည်ပတ်မှုစီးဆင်းမှုသည်ပရိုဂရမ်၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ထိရောက်စွာအရေးပါသည်။ ဤဆောင်းပါးသည်များသောအားဖြင့်အသုံးပြုလေ့ရှိသော်လည်းမကြာခဏလျစ်လျူရှု ထား လေ့ရှိသောလုပ်ဆောင်မှုများကိုအာရုံစိုက်မည်

stream_get_filts ကို နားလည်ပါ

Stream_get_Filters function ကိုလက်ရှိရရှိနိုင်သည့် stream filters များကိုရရှိရန်အသုံးပြုသည်။ အချက်အလက်များကို compressing, encoding သို့မဟုတ် encoding ကဲ့သို့သောစာဖတ်ခြင်း, စာဖတ်ခြင်း, စာဝှက်ခြင်းသို့မဟုတ်ရေးသားခြင်းကဲ့သို့သော stream filter သည် dynamically dynamicy dividifying ပြုပြင်ရန်ယန္တရားတစ်ခုဖြစ်သည်။

နမူနာကုဒ်:

 <?php
$filters = stream_get_filters();
print_r($filters);
?>

output ကိုဖြစ်လိမ့်မည်:

 Array
(
    [0] => string.rot13
    [1] => string.toupper
    [2] => string.tolower
    [3] => convert.iconv.*
    [4] => zlib.*
)

ဤစစ်ထုတ်စက်များကိုအသုံးပြုခြင်းအားဖြင့်သင်သည် PHP code ကိုကိုယ်တိုင်လုပ်ဆောင်ရန်မလိုဘဲစမ်းချောင်း၏ဖတ်ရန်နှင့်စာရေးရန်မလိုဘဲစာရေးရန်အလိုအလျောက်လုပ်ဆောင်နိုင်သည်။ I / O စစ်ဆင်ရေးပြီးနောက် CPU processing overhead ကိုသိသိသာသာလျှော့ချနိုင်သည်။

လျှောက်လွှာဥပမာ - Stream Data ကိုချုံ့ရန် ZLIB ကိုသုံးပါ

 <?php
$fp = fopen('compress.zlib://example.txt.gz', 'w');
fwrite($fp, 'Hello, Gitbox!');
fclose($fp);
?>

ဤနေရာတွင်ဖိုင်ကိုပထမ ဦး စွာရေးသားခြင်းမရှိဘဲ file ကို compress လုပ်ရန် ZLIB filter ကို အသုံးပြု. Gzcompress ဖြင့်လုပ်ဆောင်ရန်အတွက် zlib filter ကိုအသုံးပြုသည်။

stream_set_blocking ကို နားလည်ပါ

stream_set_sc.blocking function ကိုပိတ်ဆို့ခြင်းသို့မဟုတ်ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုပြောင်းရန်အသုံးပြုသည်။ ပုံမှန်အားဖြင့် Stream သည်ပိတ်ဆို့ခြင်း,

ပိတ်ဆို့ခြင်းမဟုတ်သော mode သည်ကျွန်ုပ် / o ကိုစောင့်ဆိုင်းနေစဉ်အခြားအလုပ်များကိုဆက်လက်လုပ်ဆောင်ရန်ခွင့်ပြုသည်။

  • Poll Stream Inputs (ဥပမာ Sockets ကဲ့သို့)

  • အထူးသဖြင့်ကွန်ယက်လိုင်းမထိန်းချုပ်နိုင်သောဖြစ်ရပ်များတွင်တုန့်ပြန်မှုများကိုတိုးတက်အောင်ပြုလုပ်ခြင်း

နမူနာကုဒ်:

 <?php
$fp = fopen('http://gitbox.net/data', 'r');
stream_set_blocking($fp, false);

while (!feof($fp)) {
    $data = fread($fp, 1024);
    if ($data) {
        echo $data;
    }
    // အခြားအပြောင်းအလဲနဲ့ယုတ္တိဗေဒ,ဒေတာကိုစောင့်ဆိုင်းနေစဉ် run နိုင်ပါတယ်
    usleep(100000); // ခြင်း simulation processing နှောင့်နှေး
}
fclose($fp);
?>

ပိတ်ဆို့ခြင်းမဟုတ်သော mode မှတစ်ဆင့်ပရိုဂရမ်သည်ကွန်ယက်စာဖတ်ခြင်းကိုအချိန်ကြာမြင့်စွာတွန့်ဆုတ်နေပြီးသိသိသာသာတိုးပွားစေနိုင်သည်။

စွမ်းဆောင်ရည် optimization အကြံပြုချက်များ

  1. manual data processing processing ကိုလျှော့ချပါ။ လက်ရေးချုံ့ခြင်း, စာဝှက်ခြင်းသို့မဟုတ် format လုပ်ခြင်းဆိုင်ရာကုဒ်အစား stream_get_filters မှပေးသော built-in filter များကိုသုံးပါ။

  2. ပိတ်ဆို့ခြင်းနှင့်စောင့်နေခြင်းကိုရှောင်ကြဉ်ပါ။ ကွန်ယက်စီးဆင်းမှု, ပိုက်လိုင်းများ, sockets များစသဖြင့် CPU idling ကိုရှောင်ရှားရန် Stream_set_Set_blocking ကို အသုံးပြုပါ။

  3. stream selector နှင့်ပေါင်းစပ်: stream_selectect နှင့်အတူ, သင်တစ်ချိန်တည်းမှာ streams မျိုးစုံနားထောင်နိုင်, စောင့်ဆိုင်းအချိန်ကိုလျှော့ချ။