အထူးသဖြင့်ဖိုင်ကြီးများကိုကူးယူသောအခါ, အထူးသဖြင့်ဖိုင်ကြီးများကိုကူးယူခြင်းသို့မဟုတ်ပေါင်းစုံသောဝန်းကျင်တွင်ဖိုင်များကိုကူးယူသောအခါဖိုင်များကိုကူးယူခြင်းသို့မဟုတ်ဖိုင်များကိုကူးယူသောအခါ, အသုံးများသောတစ်ပြိုင်နက်တည်းပြ problem နာတစ်ခုမှာဖိုင်များကိုကူးယူခြင်းလုပ်ငန်းစဉ်အတွင်းဖိုင်များကိုအခြားဖြစ်စဉ်များမှကြည့်ရှုခြင်းသို့မဟုတ်ပြုပြင်ထားသောသို့မဟုတ်ပြုပြင်မွမ်းမံခြင်းများပြုလုပ်နိုင်သည်။ PHP တွင်ဤပြ problem နာကို stream_supports_lock () function ကိုအသုံးပြုခြင်းဖြင့်ရှောင်ရှားနိုင်သည်။ ဤဆောင်းပါးသည်ဖိုင်ကူးယူစဉ်အတွင်းတစ်ပြိုင်နက်တည်းပ conflict ိပက်ခမရှိကြောင်းသေချာစေရန်ဤလုပ်ငန်းလုပ်ဆောင်ချက်ကိုမည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါမည်။
stream_supports_lock () သည် PHP တွင်ပါ 0 င်သော function တစ်ခုဖြစ်သည်။ ဖိုင်သော့ခတ်သည်လုပ်ငန်းစဉ်များများစွာရေးသားခြင်းသို့မဟုတ်ဖတ်ရှုခြင်းများကိုရှောင်ကြဉ်ခြင်းမှရှောင်ကြဉ်ခြင်းမှရှောင်ရှားရန်လုပ်ငန်းစဉ်များသို့မဟုတ်ချည်များဖြင့်ဖိုင်တွဲမျိုးစုံဖြင့်အသုံးပြုမှုကိုထိန်းချုပ်ရန်အသုံးပြုသောယန္တရားတစ်ခုဖြစ်သည့်ယန္တရားတစ်ခုဖြစ်သည်။ stream_supports_lock () function သည် developer များကဖိုင်များ 0 န်ဆောင်မှုမပြုလုပ်မီဒေတာလုံခြုံရေးကိုသေချာစေရန်ဖိုင်သော့ခတ်များကိုအသုံးပြုနိုင်သည်ဖြစ်စေ,
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">stream_supports_lock</span></span><span> ( resource </span><span><span class="hljs-variable">$stream</span></span><span> )
</span></span>
Parametersters - ဤလုပ်ဆောင်မှုသည်ပုံမှန်အားဖြင့် fopen () function မှတဆင့်ရရှိသောမှန်ကန်သောဖိုင်စီးသည့်အရင်းအမြစ်ဖြစ်သော Parameter $ stream ကို လက်ခံသည်။
Reward Value : အကယ်. စမ်းချောင်းသည်ဖိုင်သော့ခတ်များကိုထောက်ပံ့ပါက function သည် မှန်ကန် သည် ။
ဖိုင်တစ်ခုကိုမကူးမီ, အရင်းအမြစ်ဖိုင်နှင့်ပစ်မှတ်ဖိုင်ကိုပထမ ဦး ဆုံးဖွင့်ရန်လိုအပ်သည်။ ၎င်းကို PHP ၏ fopen () function ကိုလုပ်ဆောင်နိုင်ပြီးဖိုင်ကို Read-write mode တွင်ဖွင့်ရန်သေချာစေသည်။
<span><span><span class="hljs-variable">$sourceFile</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"source.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);
</span><span><span class="hljs-variable">$destFile</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"destination.txt"</span></span><span>, </span><span><span class="hljs-string">"w"</span></span><span>);
</span></span>
မည်သည့်ဖိုင်အမျိုးအစားမပြုလုပ်မီဖိုင်စီးသည်သော့ခတ်များကိုအထောက်အပံ့မရှိမရှိစစ်ဆေးရန် stream_supports_lock () ကို သုံးပါ။ အကယ်. ဖိုင်သော့ခတ်ခြင်းကိုမပံ့ပိုးပါကတစ်ပြိုင်နက်တည်းပ conflicts ိပက်ခများကိုရှောင်ရှားရန်အခြားနည်းလမ်းများကိုအသုံးပြုခြင်းကိုစဉ်းစားပါ။
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_supports_lock</span></span><span>(</span><span><span class="hljs-variable">$sourceFile</span></span><span>) && </span><span><span class="hljs-title function_ invoke__">stream_supports_lock</span></span><span>(</span><span><span class="hljs-variable">$destFile</span></span><span>)) {
</span><span><span class="hljs-comment">// Support Support,ဆက်လက်နေ</span></span><span>
} </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">"文件流不Support Support,တစ်ပြိုင်နက်တည်းလုံခြုံရေးသေချာစေရန်နိုင်ခြင်း!"</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>
အကယ်. ဖိုင်စီးကိုသော့ခတ်ခြင်းအားဖြင့် Supporting Supporting Supporting Supporting Source file နှင့် target file ကိုသော့ခတ်ရန် သိုးစု () function ကိုသုံးနိုင်သည်။ Fleck () function သည် function function များအတွင်းသော့ခတ်ရန်ခွင့်ပြုသည်, ထို့ကြောင့်တစ်ချိန်တည်းတွင်ဖိုင်များ 0 င်ရောက်ခြင်းကိုအခြားဖြစ်စဉ်များသို့မဟုတ်ချည်များကိုရှောင်ရှားရန်ခွင့်ပြုသည်။
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">flock</span></span><span>(</span><span><span class="hljs-variable">$sourceFile</span></span><span>, LOCK_SH) && </span><span><span class="hljs-title function_ invoke__">flock</span></span><span>(</span><span><span class="hljs-variable">$destFile</span></span><span>, LOCK_EX)) {
</span><span><span class="hljs-keyword">while</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">feof</span></span><span>(</span><span><span class="hljs-variable">$sourceFile</span></span><span>)) {
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$sourceFile</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$destFile</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>);
}
</span><span><span class="hljs-comment">// သော့ခတ်ကိုလွှတ်လိုက်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">flock</span></span><span>(</span><span><span class="hljs-variable">$sourceFile</span></span><span>, LOCK_UN);
</span><span><span class="hljs-title function_ invoke__">flock</span></span><span>(</span><span><span class="hljs-variable">$destFile</span></span><span>, LOCK_UN);
} </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">"ဖိုင်သော့ခတ်မရနိုင်ပါ,စစ်ဆင်ရေးပျက်ကွက်!"</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>
Lock_sh : သော့ခတ်ခြင်း, အခြားဖြစ်စဉ်များကိုဖတ်ရန်တစ်ခုတည်းသော mode တွင်ဖိုင်များကို 0 င်ရောက်ခွင့်ပြုသည်။
Lock_ex : အခြားဖြစ်စဉ်များကိုဖိုင်များ 0 င်ရောက်ခြင်းမှတားမြစ်ခြင်း, သီးသန့်သော့ခတ်ခြင်း။
lock_un : သော့ဖွင့်ပါ။
ဖိုင်ကိုကူးယူပြီးပါက system အရင်းအမြစ်များကိုအခမဲ့လွှတ်ရန်ဖိုင်စီးကိုပိတ်ရန်သတိရပါ။
<span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$sourceFile</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$destFile</span></span><span>);
</span></span>
stream_supports_lock () flock () fixs () fixs () fixs () follocks ကိုအသုံးပြုခြင်းဖြင့် PHP သည် concurrent conflicts များအတွင်း concurrent ပ conflicts ိပက်ခများကိုမဖြစ်ပေါ်စေသည့်ထိရောက်သောဖိုင်သော့ခတ်ကိရိယာကိုပေးသည်။ ကျိုးကြောင်းဆီလျော်သောဖိုင်သော့ခတ်ထိန်းချုပ်မှုအားဖြင့်အချက်အလက်များ၏သမာဓိကိုအာမခံနိုင်ပြီးအဂတိလိုက်စားမှုသို့မဟုတ်ကူးယူခြင်းအမှားများကိုရှောင်ရှားနိုင်သည်။ Multi-Proach သို့မဟုတ် Multi-Threaded file operations များအတွက်ဖိုင်သော့ခတ်ခြင်းကိုအသုံးပြုခြင်းသည်တစ်ပြိုင်နက်တည်းလုံခြုံရေးကိုသေချာစေရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။