လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> binary log files များကိုရေးရန် Pack () နှင့် fwite () ကိုသုံးပါ

binary log files များကိုရေးရန် Pack () နှင့် fwite () ကိုသုံးပါ

M66 2025-05-28

PHP တွင်ဒေတာများကို binary form တွင် log files များထဲသို့စာရေးခြင်းသည်သိုလှောင်မှုနေရာကိုထိရောက်စွာလျှော့ချနိုင်ပြီးဖတ်စွမ်းဆောင်ရည်တိုးတက်လာသည်။ farge () function () function () function ကို () function သည်ဤအောင်မြင်ရန်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည်ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာအချက်အလက်များကို binary log files များထဲသို့ရေးရန်နှင့်သက်ဆိုင်ရာနည်းပညာဆိုင်ရာအသေးစိတ်အချက်အလက်များကိုရှင်းပြရန်ဤလုပ်ငန်းဆောင်တာနှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုဖော်ပြရန်ဥပမာတစ်ခုကိုအသုံးပြုလိမ့်မည်။

ဘာကြောင့် binary log ကိုရွေးချယ်ရတာလဲ။

ရိုးရာစာသားမှတ်တမ်းများနှင့်နှိုင်းယှဉ်ပါက Binary logs ၏အားသာချက်များမှာ -

  • Compact: Data space ကိုသိမ်းရန်ဒေတာများကိုသိမ်းဆည်းရန် Byte alignment ကိုသုံးပါ။

  • ပိုမိုထိရောက်သော: အစာရှောင်ခြင်းစာဖတ်ခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းသည်မြင့်မားသောတစ်ပြိုင်နက်တည်း,

  • ပိုမိုလုံခြုံမှု - မှတ်တမ်းဖွဲ့စည်းပုံကိုကိုယ်တိုင်ပြုပြင်ရန်မလွယ်ကူပါ။

ဟုတ်ပါတယ်, အားနည်းချက်ကတော့စာဖတ်နိုင်မှုညံ့ဖျင်းသည်။

အထုပ်၏အခန်းကဏ် ()

POSP () PHP variable များကို binary strings များထဲသို့ထည့်ရန်အသုံးပြုသည်။ ၎င်း၏အခြေခံ syntax ဖြစ်ပါတယ်:

 string pack(string $format, mixed ...$values)

$ format သည် format string တစ်ခုဖြစ်သည့် format string တစ်ခုဖြစ်သည်။

  • : လက်မှတ်မထိုးထားသောရှည်လျားသောကိန်းဂဏန်းများ (4 bytes, စက် endianness)

  • N : IFFIGNED မခံနိုင်သောရှည်လျားသောကိန်းဂဏန်းများ (4 Bytes, Big Endian byte အမိန့်)

  • A : Muul Flang string ကို

  • F : တစ်ခုတည်းသောတိကျသောရေပေါ်အမှတ်နံပါတ် (4 bytes)

ဥပမာ - အသုံးပြုသူလက်လှမ်းမီမှုမှတ်တမ်း

အသုံးပြုသူ Access Logs ကိုဥပမာအနေနဲ့မှတ်တမ်းတင်ထားကြပါစို့။ မှတ်တမ်းတစ်ခုစီတွင်အောက်ပါနယ်ပယ်များပါရှိသည်။

  • User ID (4 byte offigned integer)

  • Timestamp (4 byte offigned integer)

  • Page URL အရှည် (2 byte offigned integer)

  • Page URL (variable length string)

 <?php

function write_log($user_id, $timestamp, $url) {
    $fp = fopen("access.log", "ab"); // Binary ends အတွက် open log file ကို
    if (!$fp) {
        die("မှတ်တမ်းဖိုင်ကိုဖွင့ ်. မရပါ");
    }

    $url = parse_url($url, PHP_URL_PATH); // သာလမ်းကြောင်းအပိုင်းကိုမှတ်တမ်းတင်ထားသည်,အထိခိုက်မခံတဲ့ parameters တွေကိုပါတဲ့မှတ်တမ်းများကိုရှောင်ကြဉ်ပါ
    $url_length = strlen($url);

    if ($url_length > 65535) {
        $url = substr($url, 0, 65535); // အများဆုံးသိုလှောင်မှုသာဖြစ်နိုင်သည်2byte အရှည်URL
        $url_length = 65535;
    }

    // အထုပ် fixed အရှည်ဒေတာ:အသုံးပြုသူID + အချစ် + URLအရှည်
    $header = pack("L L n", $user_id, $timestamp, $url_length);

    // ဖိုင်များကိုမှတ်တမ်းတင်ရန်ရေးပါ
    fwrite($fp, $header);
    fwrite($fp, $url);

    fclose($fp);
}

// နမူနာခေါ်ဆိုမှု
write_log(123456, time(), "https://m66.net/user/profile?id=987");
?>

အထက်ပါကုဒ်သည်အောက်ပါတို့ကိုလုပ်ဆောင်သည် -

  1. အသုံးပြုသူ၏ ID, Timestamp နှင့် URL အရှည်ကို binary format ဖြင့် encode လုပ်ရန် pack ကို သုံးပါ။

  2. header နှင့် URL ခန္ဓာကိုယ်အသီးသီးရေးရန် FWRITE () ကို သုံးပါ။

  3. မှတ်တမ်းတစ်ခုစီသည်ရှင်းလင်းသောနှင့်ကျစ်လစ်သိပ်သည်းမှုပုံစံနှင့်နောက်ဆက်တွဲစာဖတ်ခြင်းသို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်အသုံးပြုနိုင်သည်။

မှတ်တမ်းများကိုဘယ်လိုဖတ်ရမလဲ

စာရေးပြီးသောအခါအောက်ပါနည်းလမ်းကို အသုံးပြု. ဤ binary logs များကိုဖတ်။ decoded လုပ်နိုင်သည်။

 <?php

function read_logs($filename) {
    $fp = fopen($filename, "rb");

    while (!feof($fp)) {
        $header = fread($fp, 10); // 4ဒရယ်အသုံးပြုသူID + 4ဒရယ်အချစ် + 2ဒရယ်URLအရှည်
        if (strlen($header) < 10) break;

        $data = unpack("Luser_id/Ltimestamp/nurl_len", $header);
        $url = fread($fp, $data['url_len']);

        echo "အသုံးပြုသူID: {$data['user_id']}, အချိန်: " . date('Y-m-d H:i:s', $data['timestamp']) . ", URL: $url\n";
    }

    fclose($fp);
}

// နမူနာခေါ်ဆိုမှု
read_logs("access.log");
?>

အကျဉ်းချုပ်

Pack () နှင့် fwite) မှတဆင့် () မှတဆင့်စနစ်တကျအချက်အလက်များအား binary log files များထဲသို့ထိရောက်စွာရေးသားနိုင်ပါသည်။ Binary Logs သည်တိုက်ရိုက်ကြည့်ရှုရန်မလွယ်ကူသော်လည်းစနစ်၏စွမ်းဆောင်ရည်နှင့်ထိန်းသိမ်းမှုကိုတိုးတက်စေရန်အသုတ်များနှင့်ဆန်းစစ်ခြင်းကိုပြုလုပ်နိုင်သည်။

လက်တွေ့ကျသော application များအရဤနည်းလမ်းကိုအသုံးပြုသူအပြုအမူလမ်းကြောင်းများကိုမှတ်တမ်းတင်ခြင်းကဲ့သို့သောအခြေအနေမျိုးစုံအထိတိုးချဲ့နိုင်သည်။