PHP တွင်ဖိုင်များ, ကွန်ယက်များနှင့်မှတ်ဉာဏ်ကဲ့သို့သောအရင်းအမြစ်များကိုလုပ်ဆောင်ရန်အတွက်စည်းလုံးညီညွတ်သော interface တစ်ခုဖြစ်သည်။ လုပ်ငန်းလည်ပတ်မှုစီးဆင်းမှုသည်ပရိုဂရမ်၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ထိရောက်စွာအရေးပါသည်။ ဤဆောင်းပါးသည်များသောအားဖြင့်အသုံးပြုလေ့ရှိသော်လည်းမကြာခဏလျစ်လျူရှု ထား လေ့ရှိသောလုပ်ဆောင်မှုများကိုအာရုံစိုက်မည် ။
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 ကိုသိသိသာသာလျှော့ချနိုင်သည်။
<?php
$fp = fopen('compress.zlib://example.txt.gz', 'w');
fwrite($fp, 'Hello, Gitbox!');
fclose($fp);
?>
ဤနေရာတွင်ဖိုင်ကိုပထမ ဦး စွာရေးသားခြင်းမရှိဘဲ file ကို compress လုပ်ရန် ZLIB filter ကို အသုံးပြု. Gzcompress ဖြင့်လုပ်ဆောင်ရန်အတွက် zlib filter ကိုအသုံးပြုသည်။
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 မှတစ်ဆင့်ပရိုဂရမ်သည်ကွန်ယက်စာဖတ်ခြင်းကိုအချိန်ကြာမြင့်စွာတွန့်ဆုတ်နေပြီးသိသိသာသာတိုးပွားစေနိုင်သည်။
manual data processing processing ကိုလျှော့ချပါ။ လက်ရေးချုံ့ခြင်း, စာဝှက်ခြင်းသို့မဟုတ် format လုပ်ခြင်းဆိုင်ရာကုဒ်အစား stream_get_filters မှပေးသော built-in filter များကိုသုံးပါ။
ပိတ်ဆို့ခြင်းနှင့်စောင့်နေခြင်းကိုရှောင်ကြဉ်ပါ။ ကွန်ယက်စီးဆင်းမှု, ပိုက်လိုင်းများ, sockets များစသဖြင့် CPU idling ကိုရှောင်ရှားရန် Stream_set_Set_blocking ကို အသုံးပြုပါ။
stream selector နှင့်ပေါင်းစပ်: stream_selectect နှင့်အတူ, သင်တစ်ချိန်တည်းမှာ streams မျိုးစုံနားထောင်နိုင်, စောင့်ဆိုင်းအချိန်ကိုလျှော့ချ။