protocol buffers (တိုတောင်းသော Protobuf) သည် Google မှတီထွင်ထားသောပေါ့ပါးပြီးထိရောက်သောအချက်အလက်လဲလှယ်ပုံစံဖြစ်သည်။ XML သို့မဟုတ် JSONS နှင့်နှိုင်းယှဉ်လျှင် Protobuf သည် Serialize နှင့် desonizer desonizing desonizing serialize နှင့် deseralize deseralize ကိုအသုံးပြုခြင်းအတွက်ပိုမိုမြင့်မားသောအမြန်နှုန်းနှင့်သေးငယ်သောအချက်အလက်ပမာဏရှိသည်။
Protobuf ကိုမစတင်မီ Php ၏ Protobuf extension ကို install လုပ်ရန်လိုအပ်သည့် Php ၏ Protobuf extension ကိုတပ်ဆင်ရန်လိုအပ်သည်။
pecl install protobuf
ထည့်သွင်းမှုပြီးပြည့်စုံပြီးနောက် Php.ini ဖိုင်တွင် Protobuf extension ကိုဖွင့်ရန်အောက်ပါမျဉ်းကိုထည့်ရန်မမေ့ပါနှင့်။
extension=protobuf.so
Protobuf သည် XML (သို့) JSONS ရှိ Schemas နှင့်ဆင်တူသောဖွဲ့စည်းပုံဖိုင်များကိုသတ်မှတ်ခြင်းအားဖြင့်ဒေတာအဆောက်အအုံများကိုဖော်ပြသည်။ ဤတွင်ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာအဓိပ္ပာယ်သတ်မှတ်ချက်၏ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။
// example.proto
syntax = "proto2";
message Person {
required string name = 1;
required int32 age = 2;
repeated string hobbies = 3;
}
ဤဥပမာသည်အမည် (string), အသက် (string), on on on and ား (string) နှင့်ဝါသနာများ (string array),
protobuf မှပေးသော code subs tool ကိုမှတဆင့်သင်ဖွဲ့စည်းပုံဖိုင်များကို PHP အတန်းများအဖြစ်ပြောင်းလဲနိုင်သည်။ အောက်ပါ command သည်သက်ဆိုင်ရာ PHP code ကိုထုတ်ပေးသည်။
protoc --php_out=. example.proto
ဒီ command ကို run ပြီးတဲ့နောက်ဥပမာ --pb.php ဖိုင်ကိုသက်ဆိုင်ရာ PHP အတန်းများနှင့်နည်းလမ်းများပါ 0 င်သည်။
PHP တွင်အချက်အလက်များကိုသိမ်းဆည်းခြင်းနှင့် dialize လုပ်ရန်ထုတ်လုပ်ထားသော PHP လူတန်းစားကိုသုံးနိုင်သည်။ ဤတွင်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။
require 'example.pb.php';
// aPersonကန့်ကွက်
$person = new Person();
$person->setName('John Doe');
$person->setAge(30);
$person->addHobbies('Reading');
$person->addHobbies('Swimming');
// သေတမ်းစာPersonကန့်ကွက်编码为二进制数据
$data = $person->serializeToString();
// output ကို encoded ဒေတာ
echo "Encoded data: " . base64_encode($data) . "\n";
// သေတမ်းစာ二进制数据解码为Personကန့်ကွက်
$decodedPerson = new Person();
$decodedPerson->mergeFromString($data);
// output decoded ဒေတာ
echo "Decoded object:\n";
echo "Name: " . $decodedPerson->getName() . "\n";
echo "Age: " . $decodedPerson->getAge() . "\n";
echo "Hobbies: " . implode(', ', $decodedPerson->getHobbies()) . "\n";
အထက်ပါကုဒ်သည်လူတစ် ဦး အားအရာဝတ်ထုတစ်ခုကိုမည်သို့ဖန်တီးရမည်ကိုပြသသည်။ ကွင်းဆင်းတန်ဖိုးကိုသတ်မှတ်ရန်,
Protobuf သည်အထူးသဖြင့်ဒေတာပမာဏများများစားစားဖြစ်သော Network ပတ် 0 န်းကျင်တွင်အချက်အလက်များကိုထုတ်လွှင့်ရန်အတွက်အကောင်းဆုံးဖြစ်သည်။ ၎င်း၏ထိရောက်သော serialization နှင့် deserialization နည်းလမ်းများသည် bandwidth ကိုထိထိရောက်ရောက်သိမ်းဆည်းခြင်းနှင့်ဒေတာထုတ်လွှင့်မှုမြန်နှုန်းကိုတိုးတက်စေနိုင်သည်။
၎င်း၏ကျစ်လစ်သိပ်သည်းပုံစံများကြောင့်ဒေတာသိုလှောင်ခြင်းအတွက်အကောင်းဆုံးဖြစ်သည်။ Protobuf ကိုအသုံးပြုခြင်းဖြင့်သိမ်းဆည်းထားသောဒေတာများသည်အခြားပုံစံများထက်သိုလှောင်ရန်နေရာပိုမိုများပြားလာလိမ့်မည်။
Protobuf သည် PHP ကိုထောက်ပံ့ရုံသာမက Java နှင့် Python ကဲ့သို့သော programming ဘာသာစကားအမျိုးမျိုးကိုထောက်ပံ့သည်။
ထိရောက်သော Cross- ပလက်ဖောင်းဒေတာဖလှယ်မှုပုံစံအနေဖြင့် Protobuf သည်ပေါ့ပါး။ အစာရှောင်ခြင်းနှင့်ထိရောက်သော၏ဝိသေသလက္ခဏာများရှိသည်။ PHP ၏ Protobuf extension မှတစ်ဆင့် developer များသည် encoding နှင့် decoding protumuf အချက်အလက်များ၏ encoding နှင့် decoding လုပ်ငန်းများကိုလျင်မြန်စွာအကောင်အထည်ဖော်နိုင်သည်။ လက်တွေ့ကျသော application များအရ Protobuf သည်ကွန်ယက်ဆက်သွယ်ရေး, cache နှင့်ဘာသာစကားဆိုင်ရာအချက်အလက်များဖလှယ်ရေးကဲ့သို့သောအခြေအနေများတွင်စနစ်၏စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်ပြုလုပ်နိုင်သည်။