လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> File Octions ၏အနုမြူဗုံးနှင့်လုံခြုံမှုကိုသေချာစေရန် FSSYNC ကို စုစည်း. FSYNC ကိုမည်သို့အသုံးပြုရမည်နည်း။

File Octions ၏အနုမြူဗုံးနှင့်လုံခြုံမှုကိုသေချာစေရန် FSSYNC ကို စုစည်း. FSYNC ကိုမည်သို့အသုံးပြုရမည်နည်း။

M66 2025-06-26

PHP တွင်ဖိုင်အသံများပြုလုပ်သောအခါအထူးသဖြင့်လုပ်ငန်းလည်ပတ်မှု၏အနုမြူဗုံးနှင့်လုံခြုံမှုကိုသေချာစေရန်အထူးသဖြင့်လုပ်ငန်းစဉ်ဘာသာစကားမျိုးစုံသို့မဟုတ် Multi-threaded ပတ်ဝန်းကျင်တွင်ဖြစ်သည်။ သိုးစု () function နှင့် function () function) သည်အသုံးများသောကိရိယာနှစ်ခုဖြစ်သည်။ ၎င်းတို့သည်ဖိုင်အမျိုးအစားများ၏သမာဓိကိုထိရောက်စွာသေချာစွာသိရှိနိုင်ပြီးဒေတာပြိုင်ဆိုင်မှုကိုရှောင်ရှားနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခု၏အခန်းကဏ် find ကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။

1 ။ သိုးစု () function ကို - ဖိုင်သော့ခတ်ခြင်း၏အကောင်အထည်ဖော်မှု

FATCH () function ကို function ကိုတစ်ချိန်တည်းတွင်အလားတူဖိုင်များကိုပြုပြင်ခြင်းမျိုးစုံကိုရှောင်ရှားရန်ဖိုင်များကိုသော့ခတ်ရန်အသုံးပြုသည်။ ၎င်းသည်သော့ခတ်ခြင်းအမျိုးအစားနှစ်မျိုးကိုပေးသည်။ Shared Lock_SH ( Lock_sh ) နှင့်သီးသန့်သော့ခတ်ခြင်း ( Lock_ex ) ။

  • Shared Lock (Lock_sh) - လုပ်ငန်းစဉ်များစွာကိုဖိုင်များကိုဖတ်ရန်ခွင့်ပြုသော်လည်းစာရေးခြင်းကိုခွင့်မပြုပါ။

  • သီးသန့်သော့ခတ် (Lock_ex) - သီးသန့်သော့ခတ်ခြင်း, လုပ်ငန်းစဉ်တစ်ခုစီကိုဖိုင်များရေးရန်ခွင့်ပြုသည်, အခြားဖြစ်စဉ်များသည်စာမဖတ်နိုင်သော်လည်း

နမူနာကုဒ်:

 <?php
$fp = fopen('data.txt', 'c+');
if (flock($fp, LOCK_EX)) { // သီးသန့်သော့ခတ်ထည့်ပါ
    // ဖိုင်အရေးအသားစစ်ဆင်ရေးလုပ်ဆောင်ပါ
    fwrite($fp, "ဒေတာရေးပါ\n");
    fflush($fp); // File System သို့ Buffer ဒေတာများကိုရေးပါ
    flock($fp, LOCK_UN); // သော့ခတ်ကိုလွှတ်လိုက်ပါ
}
fclose($fp);
?>

2 ။ FSYNC () function ကို: အတင်းအဓမ္မ disk သို့စာရေး

PHP ကိုယ်တိုင်က function () function ကိုတိုက်ရိုက် function ကိုတိုက်ရိုက်မပေးပါဘူး Fullush () သည် ကြားခံကို flush လုပ်လိမ့်မည်ဖြစ်သော်လည်း Disk Data ကိုဆက်လက်တည်မြဲလိမ့်မည်ဟုမအာမခံနိုင်ပါ။ Linux ပတ် 0 န်းကျင်တွင် Stream_Get_meta_DA_DATA နှင့် FSCT မှတဆင့် POX_FSSYNC နှင့်အတူအကောင်အထည်ဖော်နိုင်သည်။

နမူနာခေါ်ဆိုမှု (ပံ့ပိုးထားသောပတ်ဝန်းကျင်တွင်):

 <?php
$fp = fopen('data.txt', 'c+');
if (flock($fp, LOCK_EX)) {
    fwrite($fp, "ဒေတာရေးပါ\n");
    fflush($fp);
    // posix_fsyncဒေတာ disk ကိုရေးထားကြောင်းသေချာပါစေ
    if (function_exists('posix_fsync')) {
        posix_fsync($fp);
    }
    flock($fp, LOCK_UN);
}
fclose($fp);
?>

3 ။ File စစ်ဆင်ရေး၏အနုမြူဗုံးနှင့်လုံခြုံရေးကိုသေချာစေရန် သိုးစု () နှင့် filync () ကိုပေါင်းစပ်ခြင်း

  • Utticity : သိုးစု () သည်တစ်ချိန်တည်းတွင်အချက်အလက်ပြိုင်ဆိုင်မှုကိုရှောင်ရှားခြင်း,

  • Security - Fulfush () နှင့် FSSYNC (သို့မဟုတ်အလားတူလုပ်ဆောင်ချက်များ) ကို အသုံးပြု. အချက်အလက်များပျက်ကျခြင်းကြောင့်ဒေတာများကိုဆုံးရှုံးခြင်းသို့မဟုတ်လျှပ်စစ်ဓာတ်အားပြတ်တောက်မှုကြောင့်အချက်အလက်များကိုမပျောက်စေနိုင်သည့်နေရာများသို့ရေးသည်။

ပြီးပြည့်စုံသောဥပမာ -

 <?php
$file = '/path/to/data.txt';
$fp = fopen($file, 'c+');
if (!$fp) {
    die('ဖိုင်ကိုဖွင့ ်. မရပါ');
}

if (flock($fp, LOCK_EX)) {
    // ဖိုင်ကိုဖိုင်၏အဆုံးသို့ရွှေ့ပါ,လွှမ်းခြုံခြင်းကိုရှောင်ပါ
    fseek($fp, 0, SEEK_END);
    fwrite($fp, "安全ဒေတာရေးပါ\n");
    fflush($fp); // သေတမ်းစာPHPBuffer Data သည် operating system cache ကိုရေးသည်

    // ထောက်ပံ့ system ကိုပတ်ဝန်းကျင်မှာ,အသုံးပြုfsync系统调用သေတမ်းစာ数据写入磁盘
    if (function_exists('posix_fsync')) {
        posix_fsync($fp);
    }

    flock($fp, LOCK_UN);
} else {
    echo "ဖိုင်သော့ခတ်မရနိုင်ပါ";
}

fclose($fp);
?>

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

  • တစ်ပြိုင်နက်တည်းရေးသားစဉ်ကအချက်အလက်မမှန်ကန်ကြောင်းကာကွယ်ခြင်းမှကာကွယ်ရန်သော့ခတ်ထားသောယန္တရားမှတစ်ဆင့်ပိတ်ဆို့ခြင်းယန္တရားမှတစ်ဆင့် block () တစ်ပြိုင်နက်တည်း formacrent account များကိုသေချာစေသည်။

  • FFFlush () နှင့် FSYNC () အချက်အလက်များကိုပရိုဂရမ်ကြားခံမှ operating system cache သို့ရေးသားပြီး data security ကို data security ကိုချိန်ညှိခြင်းအားဖြင့်တစ်ပြိုင်တည်းချိန်ကိုက်ရန်သေချာစေပါ။

  • နှစ်ခုပေါင်းစပ်ခြင်းသည်ဖိုင်ရေးသားခြင်းလုပ်ငန်းစဉ်တွင်အန္တရာယ်များကိုများစွာလျော့နည်းစေပြီး log ရေးသားခြင်းနှင့် configuration file အသစ်များကဲ့သို့သောအခြေအနေများအတွက်သင့်လျော်သည်။

ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဖိုင်အမျိုးအစားနှင့်လုံခြုံရေးကိုသေချာစေရန်လိုအပ်ပါက FLSYNC ၏စိတ်ကူးဖြင့် သိုးစု () ကို အသုံးပြုရန်အကြံပြုသည်။


 <?php
$file = 'https://m66.net/path/to/data.txt';
$fp = fopen($file, 'c+');
if (!$fp) {
    die('ဖိုင်ကိုဖွင့ ်. မရပါ');
}

if (flock($fp, LOCK_EX)) {
    fseek($fp, 0, SEEK_END);
    fwrite($fp, "安全ဒေတာရေးပါ\n");
    fflush($fp);

    if (function_exists('posix_fsync')) {
        posix_fsync($fp);
    }

    flock($fp, LOCK_UN);
} else {
    echo "ဖိုင်သော့ခတ်မရနိုင်ပါ";
}

fclose($fp);
?>