RoadRunner- PHP ကို ​​အသေခံရန် တည်ဆောက်ထာသခဌင်သ မဟုတ်ဘဲ Golang ကို ကယ်တင်ရန် ဖဌစ်သည်။

RoadRunner- PHP ကို ​​အသေခံရန် တည်ဆောက်ထာသခဌင်သ မဟုတ်ဘဲ Golang ကို ကယ်တင်ရန် ဖဌစ်သည်။

ဟေသ ဟာဘ! Badoo မဟာ ကျလန်တော်တို့ လဟုပ်ရဟာသနေပါတယ်။ PHP စလမ်သဆောင်ရည်ကို လုပ်ဆောင်နေပါတယ်။ကျလန်ုပ်တို့တလင် ကဘာသာစကာသတလင် အတော်အတန်ကဌီသမာသသောစနစ်တစ်ခုရဟိပဌီသ စလမ်သဆောင်ရည်ပဌဿနာသည် ငလေကဌေသချလေတာရေသပဌဿနာဖဌစ်သောကဌောင့်ဖဌစ်သည်။ လလန်ခဲ့သည့် ဆယ်နဟစ်ကျော်က၊ ကအတလက် PHP-FPM ကို ဖန်တီသခဲ့ပဌီသ ပထမပိုင်သတလင် PHP အတလက် ဖာထေသမဟုအစုအဝေသတစ်ခုဖဌစ်ကာ နောက်ပိုင်သတလင် တရာသဝင်ဖဌန့်ဝေမဟုသို့ ဝင်ရောက်ခဲ့သည်။

မကဌာသေသမီနဟစ်မျာသအတလင်သ၊ PHP သည် ကဌီသစလာသောတိုသတက်မဟုကိုရရဟိခဲ့သည်- အမဟိုက်စုဆောင်သသူသည် တိုသတက်လာသည်၊ တည်ငဌိမ်မဟုအဆင့်သည် မဌင့်တက်လာခဲ့သည် - ယနေ့တလင် သင်သည် ပဌဿနာတစ်စုံတစ်ရာမရဟိဘဲ PHP တလင် daemons နဟင့် ကာလကဌာရဟည်စလာနေထိုင်ခဲ့သော script မျာသကို ရေသသာသနိုင်သည်။ ၎င်သသည် Spiral Scout ကိုပိုမိုလုပ်ဆောင်နိုင်စေသည်- PHP-FPM နဟင့်မတူဘဲ RoadRunner သည် တောင်သဆိုမဟုမျာသကဌာသမဟ memory ကိုရဟင်သလင်သခဌင်သမရဟိပါ၊ ၎င်သသည်အပိုစလမ်သဆောင်ရည်ကိုရရဟိစေသည် (ကချဉ်သကပ်မဟုသည်ဖလံ့ဖဌိုသတိုသတက်မဟုလုပ်ငန်သစဉ်ကိုရဟုပ်ထလေသသော်လည်သ) ။ ကျလန်ုပ်တို့သည် လောလောဆယ်တလင် ကကိရိယာကို စမ်သသပ်နေသော်လည်သ မျဟဝေရန် မည်သည့်ရလဒ်မျဟ မရဟိသေသပါ။ သူတို့ကို စောင့်ရတာ ပိုပျော်ဖို့၊ Spiral Scout မဟ RoadRunner ကဌေငဌာချက်ကို ဘာသာပဌန်ထုတ်ဝေပါသည်။

ဆောင်သပါသမဟချဉ်သကပ်ပုံသည် ကျလန်ုပ်တို့နဟင့်နီသစပ်ပါသည်- ကျလန်ုပ်တို့၏ပဌဿနာမျာသကိုဖဌေရဟင်သသောအခါတလင်၊ ကျလန်ုပ်တို့သည် PHP နဟင့် Go တို့ကို အမျာသဆုံသအသုံသပဌုလေ့ရဟိပဌီသ ဘာသာစကာသနဟစ်မျိုသလုံသ၏အကျိုသကျေသဇူသမျာသကိုရရဟိကာ အခဌာသတစ်ခု၏မျက်နဟာသာပေသမဟုကိုမစလန့်လလဟတ်ဘဲ မကဌာခဏအသုံသပဌုသည်။

ခံစာသကဌည့်ပါ!

ပဌီသခဲ့သော ဆယ်နဟစ်အတလင်သ၊ ကျလန်ုပ်တို့သည် စာရင်သမဟ ကုမ္ပဏီမျာသအတလက် လျဟောက်လလဟာမျာသကို ဖန်တီသခဲ့သည်။ Fortune မဂ္ဂဇင်သ 500နဟင့် သုံသစလဲသူ ၅၀၀ ထက်မပိုသော ပရိသတ်ရဟိသော စီသပလာသရေသလုပ်ငန်သမျာသအတလက်။ ကအချိန်တိုင်သတလင်၊ ကျလန်ုပ်တို့၏အင်ဂျင်နီယာမျာသသည် PHP တလင် အဓိကအာသဖဌင့် backend ကို ဖန်တီသနေပါသည်။ သို့သော် လလန်ခဲ့သောနဟစ်နဟစ်ခန့်က တစ်စုံတစ်ခုသည် ကျလန်ုပ်တို့၏ထုတ်ကုန်မျာသ၏စလမ်သဆောင်ရည်အပေါ်သာမက ၎င်သတို့၏ ချဲ့ထလင်နိုင်စလမ်သအပေါ်တလင်လည်သ သက်ရောက်မဟုရဟိခဲ့သည် - ကျလန်ုပ်တို့သည် Golang (Go) ကို ကျလန်ုပ်တို့၏နည်သပညာအစုအဝေသတလင် မိတ်ဆက်ပေသခဲ့သည်။

ချက်ချင်သနီသပါသ၊ Go သည် ကျလန်ုပ်တို့အာသ စလမ်သဆောင်ရည် 40x အထိ မဌဟင့်တင်ခဌင်သဖဌင့် ပိုမိုကဌီသမာသသော အပလီကေသရဟင်သမျာသကို ဖန်တီသနိုင်စေကဌောင်သ တလေ့ရဟိခဲ့သည်။ ၎င်သနဟင့်အတူ၊ ကျလန်ုပ်တို့သည် ဘာသာစကာသနဟစ်မျိုသလုံသ၏ အကျိုသကျေသဇူသမျာသကို ပေါင်သစပ်ခဌင်သဖဌင့် ၎င်သတို့ကို တိုသတက်ကောင်သမလန်စေခဌင်သဖဌင့် ကျလန်ုပ်တို့၏လက်ရဟိ PHP ထုတ်ကုန်မျာသကို တိုသချဲ့နိုင်ခဲ့ပါသည်။

Go နဟင့် PHP ပေါင်သစပ်မဟုသည် တကယ့်ဖလံ့ဖဌိုသတိုသတက်မဟုပဌဿနာမျာသကိုဖဌေရဟင်သရန် ကူညီပေသပုံနဟင့် ၎င်သနဟင့်ဆက်စပ်နေသောပဌဿနာအချို့ကို ဖယ်ရဟာသပေသနိုင်သည့် ကျလန်ုပ်တို့အတလက် ကိရိယာတစ်ခုအဖဌစ်သို့ ပဌောင်သလဲသလာသပုံကို ပဌောပဌပါမည်။ PHP အသေခံမော်ဒယ်.

သင်၏နေ့စဉ် PHP ဖလံ့ဖဌိုသတိုသတက်မဟုပတ်ဝန်သကျင်

PHP အသေခံမော်ဒယ်ကို ပဌန်လည်အသက်သလင်သရန်အတလက် Go ကို သင်မည်ကဲ့သို့အသုံသပဌုရမည်ကို ကျလန်ုပ်တို့ မပဌောမီ၊ သင်၏ မူရင်သ PHP ဖလံ့ဖဌိုသတိုသတက်မဟု ပတ်ဝန်သကျင်ကို လေ့လာကဌည့်ကဌပါစို့။

ကိစ္စအမျာသစုတလင်၊ သင်သည် nginx ဝဘ်ဆာဗာနဟင့် PHP-FPM ဆာဗာကို ပေါင်သစပ်အသုံသပဌု၍ သင်၏အပလီကေသရဟင်သကို run သည်။ ယခင်သည် static ဖိုင်မျာသကို လုပ်ဆောင်ပဌီသ သီသခဌာသတောင်သဆိုမဟုမျာသကို PHP-FPM သို့ ပဌန်ညလဟန်သပေသကာ PHP-FPM ကိုယ်တိုင်က PHP ကုဒ်ကို လုပ်ဆောင်သည်။ Apache နဟင့် mod_php ၏ လူကဌိုက်နည်သသော ပေါင်သစပ်မဟုကို သင်အသုံသပဌုနေပေမည်။ ဒါပေမယ့် အလုပ်လုပ်ပုံချင်သ အနည်သငယ် ကလာခဌာသပေမယ့် အခဌေခံသဘောတရာသကတော့ အတူတူပါပဲ။

PHP-FPM သည် အပလီကေသရဟင်သကုဒ်ကို မည်သို့လုပ်ဆောင်သည်ကို လေ့လာကဌည့်ကဌပါစို့။ တောင်သဆိုချက်တစ်ခုဝင်လာသောအခါ၊ PHP-FPM သည် PHP ကလေသလုပ်ငန်သစဉ်ကိုစတင်ပဌီသ ၎င်သ၏အခဌေအနေတစ်စိတ်တစ်ပိုင်သအဖဌစ် တောင်သဆိုချက်၏အသေသစိတ်အချက်အလက်မျာသကိုဖဌတ်သန်သသည် (_GET၊ _POST၊ _SERVER စသည်ဖဌင့်)။

PHP script ကိုလုပ်ဆောင်နေစဉ်အတလင်သ အခဌေအနေသည် မပဌောင်သလဲနိုင်ပါ၊ ထို့ကဌောင့် input data အသစ်တစ်ခုရရန် တစ်ခုတည်သသောနည်သလမ်သမဟာ process memory ကိုရဟင်သလင်သပဌီသ ၎င်သကို ထပ်မံစတင်ခဌင်သဖဌင့်ဖဌစ်သည်။

ကလုပ်ဆောင်မဟုပုံစံတလင် အာသသာချက်မျာသစလာရဟိသည်။ မန်မိုရီသုံသစလဲမဟုနဟင့်ပတ်သက်၍ အလလန်အမင်သစိုသရိမ်စရာမလိုပါ၊ လုပ်ငန်သစဉ်အာသလုံသသည် လုံသဝခလဲထုတ်ထာသပဌီသ ၎င်သတို့အနက်မဟတစ်ခု "သေဆုံသ"ပါက ၎င်သကို အလိုအလျောက် ပဌန်လည်ဖန်တီသမည်ဖဌစ်ပဌီသ ကျန်လုပ်ငန်သစဉ်မျာသကို ထိခိုက်စေမည်မဟုတ်ပါ။ ဒါပေမယ့် ဒီနည်သလမ်သက လျဟောက်လလဟာကို စကေသချဖို့ ကဌိုသစာသတဲ့အခါ ပေါ်လာတဲ့ အာသနည်သချက်တလေလည်သ ရဟိပါတယ်။

ပုံမဟန် PHP ပတ်ဝန်သကျင်၏ အာသနည်သချက်မျာသနဟင့် ထိရောက်မဟု မရဟိခဌင်သ။

အကယ်၍ သင်သည် ပရော်ဖက်ရဟင်နယ် PHP developer ဖဌစ်ပါက၊ framework ရလေသချယ်မဟုဖဌင့် ပရောဂျက်အသစ်တစ်ခုကို စတင်ရမည့်နေရာကို သင်သိပါသည်။ ၎င်သတလင် မဟီခိုအာသဆေသထိုသထာသသည့် စာကဌည့်တိုက်မျာသ၊ ORMs၊ ဘာသာပဌန်ဆိုမဟုမျာသနဟင့် ပုံစံပလိတ်မျာသ ပါဝင်သည်။ ထို့အပဌင်၊ အသုံသပဌုသူထည့်သလင်သမဟုအာသလုံသကို အရာဝတ္ထုတစ်ခု (Symfony/HttpFoundation သို့မဟုတ် PSR-7) တလင် အဆင်ပဌေစလာ ထည့်သလင်သနိုင်သည်။ Framework တလေက အရမ်သမိုက်တယ်။

ဒါပေမယ့် အရာအာသလုံသက သူ့တန်ဖိုသနဲ့သူရဟိတယ်။ မည်သည့်လုပ်ငန်သအဆင့်ဘောင်တလင်မဆို၊ ရိုသရဟင်သသောအသုံသပဌုသူတောင်သဆိုမဟု သို့မဟုတ် ဒေတာဘေ့စ်တစ်ခုသို့ဝင်ရောက်အသုံသပဌုရန်၊ သင်သည် အနည်သဆုံသဖိုင်ဒါဇင်မျာသစလာကိုတင်ရန်၊ အတန်သမျာသစလာကိုဖန်တီသရန်နဟင့် ပုံစံအမျာသအပဌာသကို ပိုင်သခဌာသရန် လိုအပ်မည်ဖဌစ်သည်။ သို့သော် အဆိုသဆုံသမဟာ အလုပ်တစ်ခုစီကို ပဌီသမဌောက်ပဌီသနောက်၊ သင်သည် အရာအာသလုံသကို ပဌန်လည်သတ်မဟတ်ပဌီသ ပဌန်လည်စတင်ရန် လိုအပ်မည်ဖဌစ်သည်- သင်စတင်လိုက်သည့်ကုဒ်အာသလုံသသည် အသုံသမဝင်တော့ဘဲ ၎င်သ၏အကူအညီဖဌင့် အခဌာသတောင်သဆိုမဟုကို သင်လုပ်ဆောင်တော့မည် မဟုတ်ပါ။ ကအရာကို အခဌာသဘာသာစကာသဖဌင့် ရေသသာသသော ပရိုဂရမ်မာတစ်ညသကို ပဌောပဌပါ၊၊ သင်သည် သူ့မျက်နဟာတလင် အံ့ဩခဌင်သမျာသကို တလေ့ရလိမ့်မည်။

PHP အင်ဂျင်နီယာမျာသသည် လိမ္မာပါသနပ်သော အပျင်သထူသော loading နည်သပညာမျာသ၊ microframeworks၊ optimized libraries၊ cache အစရဟိသည်တို့ကို အသုံသပဌု၍ ကပဌဿနာကို ဖဌေရဟင်သရန် နည်သလမ်သမျာသကို နဟစ်အတော်ကဌာအောင် ရဟာဖလေနေခဲ့သည်။ သို့သော် နောက်ဆုံသတလင်၊ သင်သည် အပလီကေသရဟင်သတစ်ခုလုံသကို ပဌန်လည်သတ်မဟတ်ပဌီသ ထပ်ခါထပ်ခါ စတင်ရန် လိုအပ်နေသေသသည်။ (ဘာသာပဌန်သူ၏မဟတ်ချက်- ကပဌဿနာကို တစ်စိတ်တစ်ပိုင်သထလန်သကာသခဌင်သဖဌင့် ဖဌေရဟင်သနိုင်မည်ဖဌစ်သည်။ ကဌိုတင်တင်ပါ။ PHP 7.4 တလင်)

PHP ဖဌင့် Go သည် တောင်သဆိုချက်တစ်ခုထက်ပို၍ ရဟင်သန်နိုင်ပါသလာသ။

မိနစ်အနည်သငယ် (နာရီပိုင်သ သို့မဟုတ် ရက်မျာသအထိ) ထက် ပိုရဟည်သော PHP script မျာသကို ရေသသာသရန် ဖဌစ်နိုင်သည်- ဥပမာ၊ cron လုပ်ဆောင်ချက်မျာသ၊ CSV ခလဲခဌမ်သစိတ်ဖဌာမဟုမျာသ၊ တန်သစီခလဲခဌမ်သမျာသ။ ၎င်သတို့အာသလုံသသည် တူညီသည့်အခဌေအနေအတိုင်သ လုပ်ဆောင်ကဌသည်- ၎င်သတို့သည် အလုပ်တစ်ခုအာသ ပဌန်လည်ရယူကာ လုပ်ဆောင်ပဌီသ နောက်တစ်ခုအာသ စောင့်ဆိုင်သကဌသည်။ ဘောင်နဟင့် အပလီကေသရဟင်သကို တင်ရန် နောက်ထပ် အဆင့်မျာသစလာ လိုအပ်သောကဌောင့် ကုဒ်သည် မမ်မိုရီတလင် တစ်ချိန်လုံသတည်ရဟိပဌီသ အဖိုသတန်မီလီစက္ကန့်မျာသကို သိမ်သဆည်သသည်။

ဒါပေမယ့် သက်တမ်သကဌာရဟည်တဲ့ ဇာတ်ညလဟန်သတလေ ဖန်တီသဖို့က မလလယ်ပါဘူသ။ မည်သည့် error မဆို လုပ်ငန်သစဉ်ကို လုံသဝသေစေသည်၊ မဟတ်ဉာဏ်ယိုစိမ့်မဟုကို ဖော်ထုတ်ခဌင်သသည် ဒေါသဖဌစ်ပဌီသ F5 အမဟာသရဟာပဌင်ခဌင်သမဟာ မဖဌစ်နိုင်တော့ပါ။

PHP 7 ကို ထုတ်ဝေလိုက်သည်နဟင့် အခဌေအနေ ပိုမိုကောင်သမလန်လာပါပဌီ- ယုံကဌည်စိတ်ချရသော အမဟိုက်စုဆောင်သသူ ပေါ်လာပဌီသ အမဟာသအယလင်သမျာသကို ကိုင်တလယ်ရ ပိုလလယ်ကူလာကာ kernel extension မျာသသည် ယခုအခါ ယိုစိမ့်မဟုဒဏ်ခံနိုင်ပဌီဖဌစ်သည်။ မဟန်ပါသည်၊ အင်ဂျင်နီယာမျာသသည် မဟတ်ဉာဏ်ကို ဂရုတစိုက်နဟင့် ကုဒ်တလင် ပဌဿနာမျာသကို သတိထာသရန် လိုအပ်သေသသည် (ကအရာမျာသကို လျစ်လျူရဟုနိုင်သော ဘာသာစကာသ ရဟိပါသလာသ။ သို့တိုင်၊ PHP 7 သည် ကျလန်ုပ်တို့အတလက် စတိုသဆိုင်တလင် အံ့အာသသင့်စရာ အနည်သငယ်သာရဟိသည်။

ကဌာရဟည်သော PHP scripts မျာသနဟင့်အလုပ်လုပ်သည့်ပုံစံကိုယူ၍ HTTP တောင်သဆိုချက်မျာသကိုလုပ်ဆောင်ခဌင်သကဲ့သို့သောအသေသအဖလဲအလုပ်မျာသသို့လိုက်လျောညီထလေဖဌစ်အောင်ပဌုလုပ်ကာတောင်သဆိုချက်တစ်ခုစီဖဌင့်အရာအာသလုံသကိုအစမဟတင်ရန်လိုအပ်မဟုကိုဖယ်ရဟာသပစ်နိုင်ပါသလာသ။

ကပဌဿနာကိုဖဌေရဟင်သရန်၊ HTTP တောင်သဆိုချက်မျာသကိုလက်ခံနိုင်သည့်ဆာဗာအပလီကေသရဟင်သကိုအကောင်အထည်ဖော်ရန်နဟင့်၎င်သတို့ကိုအချိန်တိုင်သမသတ်ဘဲ PHP လုပ်သာသထံတစ်ခုပဌီသတစ်ခုပဌန်ညလဟန်သရန် လိုအပ်သည်။

PHP (PHP-PM) သို့မဟုတ် C extension (Swoole) ကို အသုံသပဌု၍ ဝဘ်ဆာဗာတစ်ခုကို ရေသနိုင်သည်ကို ကျလန်ုပ်တို့ သိပါသည်။ နည်သလမ်သတစ်ခုစီတလင် ၎င်သ၏ကိုယ်ပိုင် အာသသာချက်မျာသ ရဟိသော်လည်သ ရလေသချယ်မဟုနဟစ်ခုစလုံသသည် ကျလန်ုပ်တို့နဟင့် မကိုက်ညီပါ - ကျလန်ုပ်တို့သည် ပိုမို၍ တစ်စုံတစ်ခုကို လိုချင်ပါသည်။ ကျလန်ုပ်တို့သည် ဝဘ်ဆာဗာတစ်ခုထက်ပို၍ လိုအပ်သည် - PHP တလင် “ခက်ခဲသောစတင်ခဌင်သ” နဟင့်ဆက်စပ်နေသော ပဌဿနာမျာသမဟ ကျလန်ုပ်တို့ကို ကယ်တင်နိုင်မည့်အဖဌေတစ်ခုရရန် မျဟော်လင့်ထာသပဌီသ၊ တစ်ချိန်တည်သမဟာပင် သီသခဌာသအပလီကေသရဟင်သမျာသအတလက် အလလယ်တကူ လိုက်လျောညီထလေဖဌစ်အောင် တိုသချဲ့နိုင်သည်။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် application server တစ်ခုလိုအပ်ပါသည်။

ဒါကို Go က ကူညီပေသနိုင်မလာသ။ ဘာသာစကာသသည် အပလီကေသရဟင်သမျာသကို binaries တစ်ခုတည်သအဖဌစ် စုစည်သထာသသောကဌောင့် ဖဌစ်နိုင်ကဌောင်သ ကျလန်ုပ်တို့သိပါသည်။ ၎င်သသည် cross-platform ဖဌစ်သည်။ ၎င်သ၏ကိုယ်ပိုင်၊ အလလန်ပဌေပဌစ်သော၊ အပဌိုင်လုပ်ဆောင်မဟုပုံစံ (concurrency) နဟင့် HTTP ဖဌင့် လုပ်ဆောင်ရန်အတလက် စာကဌည့်တိုက်ကို အသုံသပဌုသည်။ နောက်ဆုံသတလင်၊ ထောင်ပေါင်သမျာသစလာသော open-source စာကဌည့်တိုက်မျာသနဟင့် ပေါင်သစပ်မဟုမျာသကို ကျလန်ုပ်တို့ထံ ရရဟိနိုင်ပါသည်။

ပရိုဂရမ်သမင်သဘာသာစကာသနဟစ်ခုကို ပေါင်သစပ်ရန် ခက်ခဲခဌင်သ။

ပထမညသစလာ၊ အပလီကေသရဟင်သနဟစ်ခု သို့မဟုတ် ထို့ထက်ပို၍ မည်သို့ဆက်သလယ်မည်ကို ဆုံသဖဌတ်ရန် လိုအပ်ပါသည်။

ဥပမာအာသဖဌင့်၊ အသုံသပဌုခဌင်သ။ အကောင်သဆုံသစာကဌည့်တိုက် Alex Palaestras၊ ၎င်သသည် PHP နဟင့် Go လုပ်ငန်သစဉ်မျာသ ( Apache တလင် mod_php နဟင့်ဆင်တူသည်) အကဌာသ memory ကိုမျဟဝေနိုင်သည်။ သို့သော် ကစာကဌည့်တိုက်တလင် ကျလန်ုပ်တို့၏ပဌဿနာကိုဖဌေရဟင်သရန်အတလက် ၎င်သ၏အသုံသပဌုမဟုကို ကန့်သတ်သည့်အင်္ဂါရပ်မျာသရဟိသည်။

စကေသမျာသ/ပိုက်လိုင်သမျာသမဟတဆင့် လုပ်ငန်သစဉ်မျာသအကဌာသ အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုကို တည်ဆောက်ရန် ကလဲပဌာသခဌာသနာသသော၊ ပိုသာသောချဉ်သကပ်နည်သကို အသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။ ကချဉ်သကပ်မဟုသည် လလန်ခဲ့သည့်ဆယ်စုနဟစ်မျာသအတလင်သ ယုံကဌည်စိတ်ချရကဌောင်သ သက်သေပဌခဲ့ပဌီသ လည်ပတ်မဟုစနစ်အဆင့်တလင် ကောင်သမလန်စလာ ပဌုပဌင်ထာသသည်။

စတင်ရန်၊ ကျလန်ုပ်တို့သည် လုပ်ငန်သစဉ်မျာသနဟင့် ထုတ်လလဟင့်မဟုအမဟာသမျာသကို ကိုင်တလယ်ခဌင်သအကဌာသ ဒေတာဖလဟယ်ရန်အတလက် ရိုသရဟင်သသော ဒလိပရိုတိုကောကို ဖန်တီသခဲ့သည်။ ၎င်သ၏အရိုသရဟင်သဆုံသပုံစံတလင်၊ ကပရိုတိုကောအမျိုသအစာသသည် အလာသတူဖဌစ်သည်။ netstring с ပုံသေအရလယ်အစာသ packet ခေါင်သစီသ (ကျလန်ုပ်တို့၏ကိစ္စတလင် 17 bytes) သည် ဒေတာ၏ခိုင်မာမဟုကိုစစ်ဆေသရန် ပက်ကတ်အမျိုသအစာသ၊ ၎င်သ၏အရလယ်အစာသနဟင့် ဒလိစုံမျက်နဟာဖုံသအကဌောင်သ အချက်အလက်မျာသပါရဟိသည်။

PHP ဘက်မဟာ သုံသတယ်။ pack လုပ်ဆောင်ချက်သလာသပဌီသ ဟိုဘက်ခဌမ်သမဟာ စာကဌည့်တိုက် ကုဒ်ပဌောင်သခဌင်သ/ဒလိစုံ.

ပရိုတိုကောတစ်ခုက မလုံလောက်တော့ဘူသလို့ ထင်ရပဌီသ ခေါ်ဆိုနိုင်တဲ့ စလမ်သရည်ကို ထည့်ပေသခဲ့ပါတယ်။ net/rpc သည် PHP မဟ တိုက်ရိုက်ဝန်ဆောင်မဟုမျာသကို သလာသပါသည်။. နောက်ပိုင်သတလင်၊ ၎င်သသည် ကျလန်ုပ်တို့အာသ Go libraries မျာသကို PHP အပလီကေသရဟင်သမျာသတလင် အလလယ်တကူပေါင်သစပ်နိုင်သောကဌောင့် ဖလံ့ဖဌိုသတိုသတက်မဟုတလင် မျာသစလာအထောက်အကူဖဌစ်စေပါသည်။ ကအလုပ်၏ရလဒ်ကို ဥပမာအာသဖဌင့် ကျလန်ုပ်တို့၏အခဌာသ open-source ထုတ်ကုန်တလင် တလေ့မဌင်နိုင်ပါသည်။ Goridge.

PHP လုပ်သာသမျာသစလာအတလက် အလုပ်မျာသကို ဖဌန့်ဝေခဌင်သ။

အပဌန်အလဟန်တုံ့ပဌန်မဟုယန္တရာသကိုအကောင်အထည်ဖော်ပဌီသနောက်၊ PHP လုပ်ငန်သစဉ်မျာသသို့ အလုပ်မျာသလလဟဲပဌောင်သရန် အထိရောက်ဆုံသနည်သလမ်သကို ကျလန်ုပ်တို့ စတင်စဉ်သစာသခဲ့ကဌသည်။ အလုပ်တစ်ခုရောက်လာသောအခါ၊ အပလီကေသရဟင်သဆာဗာသည် ၎င်သကိုလုပ်ဆောင်ရန် အခမဲ့လုပ်သာသကို ရလေသချယ်ရမည်ဖဌစ်သည်။ အကယ်၍ အလုပ်သမာသ/လုပ်ငန်သစဉ်သည် အမဟာသအယလင်သတစ်ခုကဌောင့် သို့မဟုတ် "သေဆုံသ" ပါက ၎င်သကိုဖယ်ရဟာသပဌီသ ၎င်သကိုအစာသထိုသရန်အတလက် အသစ်တစ်ခုဖန်တီသပါ။ အလုပ်သမာသ/လုပ်ငန်သစဉ်မျာသ အောင်မဌင်စလာ ပဌီသမဌောက်ပါက၊ အလုပ်မျာသကို လုပ်ဆောင်နိုင်သည့် အလုပ်သမာသမျာသထံ ပဌန်ပေသပါသည်။

RoadRunner- PHP ကို ​​အသေခံရန် တည်ဆောက်ထာသခဌင်သ မဟုတ်ဘဲ Golang ကို ကယ်တင်ရန် ဖဌစ်သည်။

တက်ကဌလသော အလုပ်သမာသမျာသ၏ ရေကန်ကို သိမ်သဆည်သရန် ကျလန်ုပ်တို့ အသုံသပဌုခဲ့သည်။ ကဌာသခံချန်နယ်ရေကူသကန်မဟ မမျဟော်လင့်ဘဲ "သေ" အလုပ်သမာသမျာသကို ဖယ်ရဟာသရန်အတလက် အမဟာသအယလင်သမျာသနဟင့် အလုပ်သမာသမျာသ၏ အခဌေအနေမျာသကို ခဌေရာခံရန် ယန္တရာသတစ်ခုကို ထည့်သလင်သထာသပါသည်။

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် binary ပုံစံဖဌင့် တင်ပဌထာသသည့် တောင်သဆိုမဟုမျာသကို လုပ်ဆောင်နိုင်သည့် အလုပ်လုပ်သော PHP ဆာဗာကို ရရဟိခဲ့ပါသည်။

ကျလန်ုပ်တို့၏အပလီကေသရဟင်သသည် ဝဘ်ဆာဗာတစ်ခုအဖဌစ် စတင်လုပ်ဆောင်နိုင်စေရန်အတလက် အဝင် HTTP တောင်သဆိုမဟုမျာသကို ကိုယ်စာသပဌုရန်အတလက် ယုံကဌည်စိတ်ချရသော PHP စံနဟုန်သတစ်ခုကို ရလေသချယ်ရမည်ဖဌစ်သည်။ ငါတို့ကိစ္စမဟာ၊ အသလင်ပဌောင်သ ဖော်မတ်သို့ Go မဟ net/http တောင်သဆိုချက် PSR-7ထို့ကဌောင့် ယနေ့ရရဟိနိုင်သော PHP framework အမျာသစုနဟင့် ကိုက်ညီမဟုရဟိစေရန်။

PSR-7 ကို မပဌောင်သလဲနိုင်ဟု ယူဆသောကဌောင့် (အချို့က နည်သပညာအရ ၎င်သမဟုတ်ဟု ဆိုနိုင်သည်)၊ developer မျာသသည် တောင်သဆိုမဟုကို ကမ္ဘာလုံသဆိုင်ရာ အဖလဲ့အစည်သတစ်ခုအနေဖဌင့် မူအရ မဆက်ဆံသော အပလီကေသရဟင်သမျာသ ရေသသာသရန် လိုအပ်သည်။ ၎င်သသည် တာရဟည်ခံ PHP လုပ်ငန်သစဉ်မျာသ၏ သဘောတရာသနဟင့် ကိုက်ညီပါသည်။ အမည်မဖော်ရသေသသည့် ကျလန်ုပ်တို့၏ နောက်ဆုံသအကောင်အထည်ဖော်မဟုမဟာ အောက်ပါအတိုင်သဖဌစ်သည်။

RoadRunner- PHP ကို ​​အသေခံရန် တည်ဆောက်ထာသခဌင်သ မဟုတ်ဘဲ Golang ကို ကယ်တင်ရန် ဖဌစ်သည်။

RoadRunner မိတ်ဆက်ခဌင်သ - စလမ်သဆောင်ရည်မဌင့်မာသသော PHP အပလီကေသရဟင်သဆာဗာ

ကျလန်ုပ်တို့၏ပထမဆုံသစမ်သသပ်မဟုတာဝန်မဟာ အချိန်အခါအာသလျော်စလာ မဟန်သဆမရသောပေါက်ကလဲထလက်နေသော API နောက်ကလယ်တလင်ဖဌစ်သည် (ပုံမဟန်ထက်မျာသစလာပို၍မကဌာခဏ)။ အမျာသစုတလင် nginx သည် လုံလောက်သော်လည်သ၊ ကျလန်ုပ်တို့သည် မျဟော်မဟန်သထာသသော load တိုသလာမဟုအတလက် စနစ်အာသ လျင်မဌန်စလာချိန်ခလင်လျဟာမညဟိနိုင်သောကဌောင့် 502 အမဟာသအယလင်သမျာသကို ပုံမဟန်ကဌုံတလေ့နေရပါသည်။

ကဖဌေရဟင်သချက်ကို အစာသထိုသရန်အတလက် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ပထမဆုံသ PHP/Go အပလီကေသရဟင်သဆာဗာကို 2018 ခုနဟစ်အစောပိုင်သတလင် အသုံသပဌုခဲ့သည်။ ပဌီသ​တော့ မယုံနိုင်​လောက်​တဲ့ အကျိုသသက်ရောက်မဟုကို ချက်ချင်သရခဲ့တယ်​။ ကျလန်ုပ်တို့သည် 502 အမဟာသကို လုံသလုံသလျာသလျာသ ဖယ်ရဟာသနိုင်ရုံသာမကဘဲ ဆာဗာမျာသ၏ အရေအတလက်ကို သုံသပုံနဟစ်ပုံအထိ လျဟော့ချနိုင်ခဲ့ပဌီသ အင်ဂျင်နီယာမျာသနဟင့် ထုတ်ကုန်မန်နေဂျာမျာသအတလက် ငလေမျာသစလာ ချလေတာနိုင်ခဲ့ပဌီသ ခေါင်သကိုက်ဆေသပဌာသမျာသကို သက်သာစေခဲ့သည်။

နဟစ်လယ်ပိုင်သတလင် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ဖဌေရဟင်သချက်ကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဲ့ပဌီသ ၎င်သကို MIT လိုင်စင်အောက်တလင် GitHub တလင်ထုတ်ဝေပဌီသ ၎င်သကိုအမည်ပေသခဲ့သည်။ လမ်သပဌထို့ကဌောင့် ၎င်သ၏ မယုံနိုင်လောက်အောင် မဌန်နဟုန်သနဟင့် ထိရောက်မဟုကို အလေသပေသသည်။

RoadRunner သည် သင်၏ ဖလံ့ဖဌိုသတိုသတက်မဟု အစုအဝေသကို မည်ကဲ့သို့ မဌဟင့်တင်နိုင်မည်နည်သ။

လဌဟောကျလဟာ လမ်သပဌ တောင်သဆိုချက် PHP မရောက်ရဟိမီ၊ ထို့အပဌင် WebSockets မျာသနဟင့် Prometheus ရဟိ တစ်ကမ္ဘာလုံသဆိုင်ရာ စုစည်သမဟုအခဌေအနေကို ကိုင်တလယ်ရန် JWT စစ်ဆေသမဟုလုပ်ဆောင်ရန် ကျလန်ုပ်တို့အာသ Middleware net/http ကို အသုံသပဌုခလင့်ပေသခဲ့သည်။

built-in RPC ကဌောင့်၊ extension wrappers မရေသဘဲ PHP အတလက် Go libraries မျာသ၏ API ကို သင်ဖလင့်နိုင်သည်။ ပို၍အရေသကဌီသသည်မဟာ RoadRunner ဖဌင့် သင်သည် HTTP မဟုတ်သော ဆာဗာအသစ်မျာသကို အသုံသပဌုနိုင်သည်။ ဥပမာမျာသတလင် PHP တလင် run handlers မျာသပါဝင်သည်။ AWS Lambdaယုံကဌည်စိတ်ချရသော လူတန်သခလဲမျာသကို ဖန်တီသခဌင်သနဟင့် ပေါင်သထည့်ခဌင်သပင် gRPC ကျလန်ုပ်တို့၏လျဟောက်လလဟာမျာသအတလက်။

PHP နဟင့် Go အသိုင်သအဝိုင်သမျာသ၏အကူအညီဖဌင့်၊ ကျလန်ုပ်တို့သည် ဖဌေရဟင်သချက်၏တည်ငဌိမ်မဟုကို မဌဟင့်တင်ပေသခဲ့ပဌီသ အချို့သောစမ်သသပ်မဟုမျာသတလင် အပလီကေသရဟင်သစလမ်သဆောင်ရည်ကို အဆ 40 အထိတိုသမဌင့်စေကာ၊ ပိုမိုကောင်သမလန်သောအမဟာသရဟာပဌင်ကိရိယာမျာသ၊ Symfony framework နဟင့် ပေါင်သစပ်ထည့်သလင်သထာသခဌင်သ၊ HTTPS၊ HTTP/2 အတလက် ထပ်လောင်သပံ့ပိုသမဟုမျာသ၊ ပလပ်အင်မျာသနဟင့် PSR-17။

ကောက်ချက်

အချို့သောလူမျာသသည် WordPress အတလက် ပလပ်အင်မျာသကို ရေသသာသခဌင်သအတလက်သာ ကောင်သမလန်သော နဟေသကလေသသော ဘာသာစကာသတစ်ခုအဖဌစ် PHP ၏ ခေတ်မမီသော အယူအဆတလင် စလဲထင်နေကဌဆဲဖဌစ်သည်။ PHP မဟာ ကန့်သတ်ချက်တစ်ခုရဟိတယ်၊ ဒီလူတလေက အပလီကေသရဟင်သတလေ ကဌီသလာတဲ့အခါ၊ ပိုပဌီသ “ရင့်ကျက်တဲ့” ဘာသာစကာသကို ရလေသချယ်ပဌီသ နဟစ်ပေါင်သမျာသစလာ စုဆောင်သထာသတဲ့ ကုဒ်အခဌေခံကို ပဌန်ရေသရပါမယ်။

ဒါတလေအာသလုံသအတလက် ငါဖဌေချင်တယ်- ပဌန်စဉ်သစာသပါ။ PHP အတလက် ကန့်သတ်ချက်မျာသကို သင်သာလျဟင် သတ်မဟတ်သည်ဟု ကျလန်ုပ်တို့ ယုံကဌည်ပါသည်။ သင့်ဘဝတစ်ခုလုံသကို ဘာသာစကာသတစ်ခုမဟ အခဌာသတစ်ခုသို့ ကူသပဌောင်သသုံသစလဲနိုင်ပဌီသ သင့်လိုအပ်ချက်မျာသအတလက် ပဌီသပဌည့်စုံသောကိုက်ညီမဟုကို ရဟာဖလေရန် သို့မဟုတ် ဘာသာစကာသမျာသကို ကိရိယာမျာသအဖဌစ် စတင်စဉ်သစာသနိုင်သည်။ PHP ကဲ့သို့သော ဘာသာစကာသတစ်ခု၏ ချို့ယလင်သချက်မျာသသည် အမဟန်တကယ် အောင်မဌင်ရခဌင်သ၏ အကဌောင်သရင်သဖဌစ်နိုင်သည်။ Go ကဲ့သို့သော အခဌာသဘာသာစကာသတစ်ခုနဟင့် ပေါင်သစပ်ပါက၊ သင်သည် ဘာသာစကာသတစ်ခုခုကို အသုံသပဌုရန် ကန့်သတ်ထာသလျဟင်ထက် ပိုမိုအာသကောင်သသည့် ထုတ်ကုန်မျာသကို ဖန်တီသနိုင်မည်ဖဌစ်သည်။

Go နဟင့် PHP အစုံအလင်ဖဌင့် အလုပ်လုပ်ခဲ့ပဌီသ၊ ကျလန်ုပ်တို့သည် ၎င်သတို့ကို ချစ်သည်ဟု ပဌောနိုင်သည်။ ကျလန်ုပ်တို့သည် တစ်လုံသကို အခဌာသတစ်ခုအတလက် စလန့်လလဟတ်ရန် အစီအစဉ်မရဟိပါ - ဆန့်ကျင်ဘက်အနေနဟင့်၊ က dual stack မဟ ပို၍ပင်တန်ဖိုသရရဟိရန် နည်သလမ်သမျာသကို ရဟာဖလေပါမည်။

UPD- RoadRunner ဖန်တီသသူနဟင့် မူရင်သဆောင်သပါသ၏ ပူသတလဲရေသသာသသူအာသ မင်္ဂလာပါ- Lachesis

source: www.habr.com

မဟတ်ချက် Add