روڊ رنر: پي ايڇ پي مرڻ لاءِ نه ٺهيل آهي، يا گولانگ بچائڻ لاءِ

روڊ رنر: پي ايڇ پي مرڻ لاءِ نه ٺهيل آهي، يا گولانگ بچائڻ لاءِ

اي حبر! اسان Badoo تي سرگرم آهيون PHP ڪارڪردگي تي ڪم، ڇاڪاڻ ته اسان وٽ هن ٻولي ۾ ڪافي وڏو سسٽم آهي ۽ ڪارڪردگي جو مسئلو آهي پئسا بچائڻ جو مسئلو. ڏهه سال اڳ، اسان ان لاءِ PHP-FPM ٺاهيو، جيڪو پهريان PHP لاءِ پيچ جو هڪ سيٽ هو، ۽ بعد ۾ سرڪاري تقسيم ۾ داخل ٿيو.

تازن سالن ۾، PHP وڏي ترقي ڪئي آهي: ڪچرو گڏ ڪندڙ بهتر ٿي چڪو آهي، استحڪام جي سطح وڌي وئي آهي - اڄ توهان بغير ڪنهن پريشاني جي PHP ۾ ڊيمون ۽ ڊگهي زندگي اسڪرپٽ لکي سگهو ٿا. انهي کي اجازت ڏني وئي سرپل اسڪائوٽ وڌيڪ اڳتي وڌڻ لاء: روڊ رنر، PHP-FPM جي برعڪس، درخواستن جي وچ ۾ ياداشت کي صاف نٿو ڪري، جيڪا اضافي ڪارڪردگي حاصل ڪري ٿي (جيتوڻيڪ اهو طريقو ترقي جي عمل کي پيچيده ڪري ٿو). اسان في الحال ھن اوزار سان تجربا ڪري رھيا آھيون، پر اسان وٽ اڃا تائين شيئر ڪرڻ لاءِ ڪي به نتيجا نه آھن. انھن جي انتظار کي وڌيڪ مزيدار بڻائڻ لاءِ، اسان اسپائرل اسڪائوٽ کان RoadRunner اعلان جو ترجمو شايع ڪريون ٿا.

مضمون جو نقطو اسان جي ويجهو آهي: جڏهن اسان جا مسئلا حل ڪندا آهيون، اسان پڻ اڪثر استعمال ڪندا آهيون PHP ۽ Go جو هڪ گروپ، ٻنهي ٻولين جا فائدا حاصل ڪرڻ ۽ هڪ ٻئي جي حق ۾ نه ڇڏڻ.

ڊي!

گذريل ڏهن سالن ۾، اسان فهرست مان ڪمپنين لاء ايپليڪيشنون ٺاهيا آهن فارونون 500، ۽ ڪاروبار لاءِ جيڪي 500 کان وڌيڪ صارفين جي سامعين سان گڏ نه هجن. هي سڀ وقت، اسان جا انجنيئر ترقي ڪري رهيا آهن پس منظر خاص طور تي PHP ۾. پر ٻه سال اڳ، ڪنهن شيءِ جو وڏو اثر نه رڳو اسان جي پروڊڪٽس جي ڪارڪردگيءَ تي، پر انهن جي اسڪاليبلٽي تي به هو- اسان متعارف ڪرايو Golang (Go) کي پنهنجي ٽيڪنالاجي اسٽيڪ ۾.

تقريبن فوري طور تي، اسان دريافت ڪيو ته Go اسان کي 40x ڪارڪردگي بهتر ڪرڻ سان گڏ وڏيون ايپليڪيشنون ٺاهڻ جي اجازت ڏني. ان سان گڏ، اسان پنھنجي موجوده پي ايڇ پي پروڊڪٽس کي وڌائڻ جي قابل ٿي ويا ھئاسين، انھن کي بھتر ڪري ٻنھي ٻولين جي فائدن کي گڏ ڪري.

اسان توهان کي ٻڌائينداسين ته ڪيئن Go ۽ PHP جو ميلاپ حقيقي ترقي جي مسئلن کي حل ڪرڻ ۾ مدد ڪري ٿو ۽ ڪيئن اهو اسان لاءِ هڪ اوزار ۾ تبديل ٿيو آهي جنهن سان لاڳاپيل ڪجهه مسئلن کان نجات حاصل ڪري سگهجي ٿي. PHP مرڻ وارو ماڊل.

توهان جي روزاني PHP ترقي ماحول

ان کان اڳ جو اسان ڳالهايون ته توهان ڪيئن استعمال ڪري سگهو ٿا گو کي بحال ڪرڻ لاءِ PHP جي مرڻ واري ماڊل کي، اچو ته هڪ نظر وٺون توهان جي ڊفالٽ PHP ڊولپمينٽ ماحول تي.

اڪثر ڪيسن ۾، توهان پنهنجي ايپليڪيشن کي هلائيندا آهيو nginx ويب سرور ۽ PHP-FPM سرور جي ميلاپ کي استعمال ڪندي. اڳوڻو جامد فائلن جي خدمت ڪري ٿو ۽ مخصوص درخواستن کي PHP-FPM ڏانهن منتقل ڪري ٿو، جڏهن ته PHP-FPM پاڻ کي PHP ڪوڊ تي عمل ڪري ٿو. توهان شايد استعمال ڪري رهيا آهيو گهٽ مشهور ميلاپ Apache ۽ mod_php. پر جيتوڻيڪ اهو ٿورو مختلف ڪم ڪري ٿو، اصول ساڳيا آهن.

اچو ته هڪ نظر رکون ته ڪيئن PHP-FPM ايپليڪيشن ڪوڊ تي عمل ڪري ٿو. جڏهن ڪا درخواست اچي ٿي، PHP-FPM هڪ PHP ٻار جي عمل کي شروع ڪري ٿو ۽ درخواست جي تفصيل کي ان جي رياست جي حصي جي طور تي پاس ڪري ٿو (_GET، _POST، _SERVER، وغيره).

رياست PHP اسڪرپٽ جي عمل جي دوران تبديل نه ٿي ڪري سگهي ٿي، تنهنڪري ان پٽ ڊيٽا جو هڪ نئون سيٽ حاصل ڪرڻ جو واحد طريقو پروسيس ميموري کي صاف ڪرڻ ۽ ان کي ٻيهر شروع ڪرڻ آهي.

هن عملدرآمد ماڊل ڪيترائي فائدا آهن. توهان کي ميموري جي استعمال جي باري ۾ تمام گهڻو پريشان ٿيڻ جي ضرورت ناهي، سڀئي عمل مڪمل طور تي الڳ ٿي ويا آهن، ۽ جيڪڏهن انهن مان هڪ "مرندو" آهي، اهو خودڪار طور تي ٻيهر ٺاهيو ويندو ۽ اهو باقي پروسيس تي اثر انداز نه ڪندو. پر هن طريقي سان پڻ نقصانات آهن جيڪي ظاهر ٿيندا آهن جڏهن ايپليڪيشن کي ماپڻ جي ڪوشش ڪندي.

هڪ باقاعده پي ايڇ پي ماحول جي نقصان ۽ غير موثريت

جيڪڏهن توهان هڪ پروفيشنل PHP ڊولپر آهيو، ته پوءِ توهان کي خبر آهي ته هڪ نئون پروجيڪٽ ڪٿي شروع ڪجي - فريم ورڪ جي چونڊ سان. اهو انحصار انجيڪشن لائبريرين، ORMs، ترجما ۽ ٽيمپليٽ تي مشتمل آهي. ۽، يقينا، سڀني صارفن جي ان پٽ کي آسانيء سان ھڪڙي اعتراض ۾ رکي سگھجي ٿو (Symfony/HttpFoundation يا PSR-7). فريم ورڪ سٺا آهن!

پر هر شيء پنهنجي قيمت آهي. ڪنهن به اداري جي سطح جي فريم ورڪ ۾، هڪ سادي صارف جي درخواست يا ڊيٽابيس تائين رسائي کي پروسيس ڪرڻ لاء، توهان کي گهٽ ۾ گهٽ درجن جي فائلن کي لوڊ ڪرڻو پوندو، ڪيترائي ڪلاس ٺاهڻ ۽ ڪيترن ئي ترتيبن کي پارس ڪرڻو پوندو. پر بدترين ڳالهه اها آهي ته هر ڪم مڪمل ڪرڻ کان پوءِ، توهان کي هر شيءِ کي ري سيٽ ڪرڻ ۽ ٻيهر شروع ڪرڻ جي ضرورت پوندي: سڀ ڪوڊ جيڪو توهان شروع ڪيو آهي بيڪار ٿي ويندو، ان جي مدد سان توهان هاڻي ٻي درخواست تي عمل نه ڪندا. اهو ڪنهن پروگرامر کي ٻڌاءِ جيڪو ڪنهن ٻي ٻوليءَ ۾ لکندو، ته سندس منهن تي حيراني نظر ايندي.

PHP انجنيئر سالن کان هن مسئلي کي حل ڪرڻ جا طريقا ڳولي رهيا آهن، هوشيار سست لوڊ ڪرڻ واري ٽيڪنڪ، مائڪرو فريم ورڪ، آپٽمائز ٿيل لائبريريون، ڪيش وغيره. پر آخر ۾، توهان کي اڃا تائين پوري ايپليڪيشن کي ري سيٽ ڪرڻو پوندو ۽ ٻيهر شروع ڪرڻو پوندو. (مترجم جو نوٽ: هي مسئلو جزوي طور تي حل ڪيو ويندو جي آمد سان اڳرائي PHP 7.4 ۾)

ڇا PHP سان Go هڪ کان وڌيڪ درخواستن کي بچائي سگهي ٿو؟

اهو ممڪن آهي ته PHP اسڪرپٽ لکڻ لاءِ جيڪي ڪجهه منٽن کان وڌيڪ رهن (ڪلاڪن يا ڏينهن تائين): مثال طور، ڪرون ٽاسڪ، سي ايس وي پارسر، قطار برڪرز. اهي سڀئي ڪم ساڳئي منظر جي مطابق: اهي هڪ ڪم ٻيهر حاصل ڪن ٿا، ان تي عمل ڪريو، ۽ ايندڙ هڪ جو انتظار ڪريو. ڪوڊ هر وقت ميموري ۾ رهي ٿو، قيمتي ملي سيڪنڊن کي بچائيندو آهي جيئن ته فريم ورڪ ۽ ايپليڪيشن کي لوڊ ڪرڻ لاءِ ڪيترائي اضافي قدم گهربل آهن.

پر ڊگھي ڄمار واري لکت کي ترقي ڪرڻ آسان ناهي. ڪا به نقص مڪمل طور تي عمل کي ختم ڪري ٿي، ميموري لڪ جي تشخيص خراب آهي، ۽ F5 ڊيبگنگ هاڻي ممڪن ناهي.

PHP 7 جي جاري ٿيڻ سان صورتحال بهتر ٿي چڪي آهي: هڪ قابل اعتماد ڪچرو ڪليڪٽر ظاهر ٿيو آهي، اهو آسان ٿي ويو آهي غلطين کي سنڀالڻ، ۽ ڪرنل ايڪسٽينشن هاڻي ليڪ پروف آهن. سچ پچ، انجنيئرن کي اڃا تائين ميموري سان محتاط رهڻ جي ضرورت آهي ۽ ڪوڊ ۾ رياستي مسئلن کان آگاهي ٿيڻ جي ضرورت آهي (ڇا ڪا ٻولي آهي جيڪا انهن شين کي نظرانداز ڪري سگهي ٿي؟). اڃا تائين، PHP 7 اسان جي لاء اسٽور ۾ گهٽ تعجب آهي.

ڇا اهو ممڪن آهي ته ڊگھي زندگي پي ايڇ پي اسڪرپٽ سان ڪم ڪرڻ جو نمونو وٺو، ان کي وڌيڪ معمولي ڪمن کي ترتيب ڏيو جهڙوڪ HTTP درخواستن جي پروسيسنگ، ۽ انهي سان گڏ هر درخواست سان شروع کان هر شي کي لوڊ ڪرڻ جي ضرورت کان نجات حاصل ڪريو؟

ھن مسئلي کي حل ڪرڻ لاءِ، اسان کي پھريائين ھڪڙي سرور ايپليڪيشن کي لاڳو ڪرڻ جي ضرورت آھي جيڪا HTTP درخواستن کي قبول ڪري سگھي ٿي ۽ انھن کي ھڪڙي ھڪڙي پي ايڇ پي ورڪر ڏانھن ريڊائريڪٽ ڪري سگھي ٿي ان کي ھر وقت مارڻ کان سواءِ.

اسان ڄاڻون ٿا ته اسان ويب سرور کي خالص PHP (PHP-PM) ۾ يا سي ايڪسٽينشن (Swoole) استعمال ڪندي لکي سگهون ٿا. ۽ جيتوڻيڪ هر طريقي جي پنهنجي خوبي آهي، ٻنهي اختيارن اسان کي مناسب نه ڪيو - اسان ڪجهه وڌيڪ چاهيون ٿا. اسان کي صرف هڪ ويب سرور کان وڌيڪ گهربل آهي - اسان کي هڪ حل حاصل ڪرڻ جي اميد آهي جيڪا اسان کي PHP ۾ "سخت شروعات" سان لاڳاپيل مسئلن کان بچائي سگهي ٿي، جيڪا ساڳئي وقت آساني سان ترتيب ڏئي سگهجي ٿي ۽ مخصوص ايپليڪيشنن لاء وڌايو وڃي. اهو آهي، اسان کي هڪ ايپليڪيشن سرور جي ضرورت آهي.

ڇا وڃو ان جي مدد سان؟ اسان ڄاڻون ٿا ته اهو ٿي سگهي ٿو ڇاڪاڻ ته ٻولي ايپليڪيشنن کي سنگل بائنري ۾ گڏ ڪري ٿي؛ اهو پار-پليٽ فارم آهي؛ HTTP سان ڪم ڪرڻ لاءِ پنهنجو، تمام خوبصورت، متوازي پروسيسنگ ماڊل (ڪنورنس) ۽ لائبريري استعمال ڪري ٿو. ۽ آخرڪار، هزارين اوپن سورس لائبريريون ۽ انضمام اسان لاءِ دستياب هوندا.

ٻن پروگرامنگ ٻولين کي گڏ ڪرڻ جي مشڪلات

سڀ کان پهريان، اهو طئي ڪرڻ ضروري هو ته ڪيئن ٻه يا وڌيڪ ايپليڪيشنون هڪ ٻئي سان رابطو ڪندا.

مثال طور، استعمال ڪندي شاندار لائبريري Alex Palaestras، اهو PHP ۽ Go پروسيس جي وچ ۾ ياداشت کي حصيداري ڪرڻ ممڪن هو (اپاچي ۾ mod_php وانگر). پر هن لائبريري ۾ خاصيتون آهن جيڪي اسان جي مسئلي کي حل ڪرڻ لاء ان جي استعمال کي محدود ڪن ٿيون.

اسان هڪ مختلف، وڌيڪ عام طريقو استعمال ڪرڻ جو فيصلو ڪيو: ساکٽس / پائپ لائنز ذريعي عملن جي وچ ۾ رابطي کي وڌائڻ لاء. اهو طريقو گذريل ڏهاڪن ۾ قابل اعتماد ثابت ٿيو آهي ۽ آپريٽنگ سسٽم جي سطح تي بهتر ڪيو ويو آهي.

شروع ڪرڻ سان، اسان پروسيس جي وچ ۾ ڊيٽا جي تبادلي ۽ ٽرانسميشن جي غلطي کي سنڀالڻ لاء هڪ سادي بائنري پروٽوڪول ٺاهيو. ان جي آسان ترين شڪل ۾، هن قسم جي پروٽوڪول سان ملندڙ جلندڙ آهي netstring с مقرر ٿيل سائيز پيڪٽ هيڊر (اسان جي صورت ۾ 17 بائيٽ)، جنهن ۾ ڊيٽا جي سالميت کي جانچڻ لاءِ پيڪٽ جي قسم، ان جي سائيز ۽ هڪ بائنري ماسڪ بابت معلومات شامل آهي.

PHP پاسي تي اسان استعمال ڪيو پيڪ فنڪشن، ۽ وڃڻ واري پاسي، لائبريري انڪوڊنگ/بائنري.

اهو اسان کي لڳي ٿو ته هڪ پروٽوڪول ڪافي نه هو - ۽ اسان ڪال ڪرڻ جي صلاحيت شامل ڪئي net/rpc وڃو خدمتون سڌو سنئون PHP کان. بعد ۾، هي اسان جي ترقي ۾ تمام گهڻو مدد ڪئي، ڇو ته اسان آساني سان گو لائبريرين کي PHP ايپليڪيشنن ۾ ضم ڪري سگهون ٿا. ھن ڪم جو نتيجو ڏسي سگھجي ٿو، مثال طور، اسان جي ٻين اوپن سورس پراڊڪٽ ۾ گورج.

ڪيترن ئي پي ايڇ پي ڪارڪنن ۾ ڪم ورهائڻ

رابطي واري ميڪانيزم کي لاڳو ڪرڻ کان پوء، اسان PHP عملن کي ڪمن کي منتقل ڪرڻ لاء سڀ کان وڌيڪ موثر طريقي جي باري ۾ سوچڻ شروع ڪيو. جڏهن هڪ ڪم اچي ٿو، ايپليڪيشن سرور کي ان کي انجام ڏيڻ لاءِ هڪ مفت ورڪر چونڊڻ گهرجي. جيڪڏهن ڪو ڪم ڪندڙ/پراسيس ڪنهن نقص سان نڪرندو آهي يا ”مرندو آهي“، اسان ان کي ختم ڪري ڇڏيندا آهيون ۽ ان کي بدلائڻ لاءِ هڪ نئون ٺاهيندا آهيون. ۽ جيڪڏهن ڪم ڪندڙ/عمل ڪاميابيءَ سان مڪمل ٿي چڪو آهي، ته اسان ان کي واپس ڪريون ٿا ڪم ڪار ڪرڻ لاءِ موجود ڪارڪنن جي پول ۾.

روڊ رنر: پي ايڇ پي مرڻ لاءِ نه ٺهيل آهي، يا گولانگ بچائڻ لاءِ

فعال ڪارڪنن جي تلاء کي ذخيرو ڪرڻ لاء، اسان استعمال ڪيو بفر ٿيل چينل, پول مان غير متوقع طور تي "مئل" ڪارڪنن کي هٽائڻ لاء، اسان ڪارڪنن جي غلطين ۽ رياستن کي ٽريڪ ڪرڻ لاء هڪ ميڪانيزم شامل ڪيو.

نتيجي طور، اسان هڪ ڪم ڪندڙ PHP سرور حاصل ڪيو جيڪو بائنري فارم ۾ پيش ڪيل ڪنهن به درخواستن کي پروسيس ڪرڻ جي قابل آهي.

اسان جي ايپليڪيشن کي ويب سرور طور ڪم ڪرڻ شروع ڪرڻ لاءِ، اسان کي ڪنهن به ايندڙ HTTP درخواستن جي نمائندگي ڪرڻ لاءِ هڪ قابل اعتماد PHP معيار چونڊڻو پوندو. اسان جي حالت ۾، اسان صرف تبديل ڪرڻ net/http جي درخواست فارميٽ ڏانھن وڃو پي ايس آر- 7انهي ڪري ته اهو اڄ موجود اڪثر پي ايڇ پي فريم ورڪ سان مطابقت رکي ٿو.

ڇاڪاڻ ته PSR-7 کي ناقابل قبول سمجهيو ويندو آهي (ڪجهه چوندا ته ٽيڪنيڪل طور تي اهو نه آهي)، ڊولپرز کي ايپليڪيشنون لکڻيون هونديون آهن جيڪي درخواست کي اصولن ۾ عالمي اداري جي طور تي علاج نه ڪندا آهن. اھو چڱي طرح ٺھي ٿو PHP جي ڊگھي رھندڙ عملن جي تصور سان. اسان جي آخري عمل درآمد، جنهن جو اڃا نالو رکيو ويو آهي، هن طرح ڏٺو:

روڊ رنر: پي ايڇ پي مرڻ لاءِ نه ٺهيل آهي، يا گولانگ بچائڻ لاءِ

روڊ رنر جو تعارف اعلي ڪارڪردگي PHP ايپليڪيشن سرور

اسان جو پهريون ٽيسٽ ٽاسڪ هڪ API پس منظر هو، جيڪو وقتي طور تي غير متوقع طور تي دفن ٿئي ٿو (عام کان گهڻو ڪري). جيتوڻيڪ nginx اڪثر ڪيسن ۾ ڪافي هئي، اسان باقاعده طور تي 502 غلطين جو سامنا ڪيو ڇو ته اسان لوڊ ۾ متوقع اضافو لاء جلدي سسٽم کي توازن نه ڪري سگهيا.

ھن حل کي تبديل ڪرڻ لاءِ، اسان 2018 جي ​​شروعات ۾ پنھنجو پھريون PHP/Go ايپليڪيشن سرور لڳايو. ۽ فوري طور تي هڪ ناقابل اعتماد اثر حاصل ڪيو! نه رڳو اسان 502 جي غلطي کان مڪمل طور تي نجات حاصل ڪئي، پر اسان سرورن جو تعداد ٻه ٽيون گھٽائڻ جي قابل ٿي ويا، انجنيئرن ۽ پراڊڪٽ مينيجرز لاءِ تمام گھڻو پئسو ۽ سر درد جي گولن جي بچت.

سال جي وچ تائين، اسان اسان جي حل کي بهتر ڪيو، GitHub تي MIT لائسنس تحت شايع ڪيو ۽ ان جو نالو رکيو روڊ جو رستواهڙيء طرح ان جي ناقابل اعتماد رفتار ۽ ڪارڪردگي تي زور ڏنو.

ڪيئن RoadRunner توهان جي ترقي جي اسٽيڪ کي بهتر ڪري سگهي ٿو

درخواست روڊ جو رستو اسان کي اجازت ڏني وئي آھي استعمال ڪرڻ جي پاسي تي Middleware net/http جي طرف JWT جي تصديق ڪرڻ لاءِ ان کان اڳ جو درخواست PHP تائين پھچڻ کان اڳ، ۽ گڏوگڏ WebSockets ۽ مجموعي رياست کي سنڀالڻ لاءِ عالمي سطح تي Prometheus ۾.

بلٽ ان آر پي سي جي مهرباني، توهان PHP لاءِ ڪنهن به گو لائبريريءَ جو API کوليو ٿا بغير لکڻ جي واڌ ويپر. وڌيڪ اهم طور تي، روڊ رنر سان توهان نوان غير HTTP سرورز کي ترتيب ڏئي سگهو ٿا. مثالن ۾ PHP ۾ هلائيندڙ هينڊلر شامل آهن AWS Lambdaقابل اعتماد قطار برڪرز ٺاهڻ، ۽ اڃا به شامل ڪرڻ جي آر پي سي اسان جي ايپليڪيشنن ڏانهن.

PHP ۽ Go ڪميونٽيز جي مدد سان، اسان حل جي استحڪام کي بهتر بڻايو، ڪجھ ٽيسٽن ۾ ايپليڪيشن جي ڪارڪردگي کي 40 ڀيرا وڌايو، ڊيبگنگ جا اوزار بهتر ڪيا، سمفوني فريم ورڪ سان انٽيگريشن کي لاڳو ڪيو، ۽ HTTPS، HTTP/2 لاءِ سپورٽ شامل ڪئي، پلگ ان، ۽ PSR-17.

ٿڪل

ڪجهه ماڻهو اڃا تائين PHP جي پراڻي تصور ۾ پڪڙيا ويا آهن هڪ سست، اڻ وڻندڙ ​​ٻولي صرف ورڈپریس لاءِ پلگ ان لکڻ لاءِ سٺي آهي. اهي ماڻهو شايد اهو به چون ٿا ته PHP جي اهڙي حد آهي: جڏهن ايپليڪيشن ڪافي وڏي ٿي وڃي ٿي، توهان کي وڌيڪ "بالغ" ٻولي چونڊڻ گهرجي ۽ ڪيترن ئي سالن کان گڏ ڪيل ڪوڊ بيس کي ٻيهر لکڻو پوندو.

هن سڀني لاء آئون جواب ڏيڻ چاهيان ٿو: ٻيهر سوچيو. اسان سمجهون ٿا ته صرف توهان PHP لاءِ ڪا به پابنديون مقرر ڪريو ٿا. توھان پنھنجي سڄي زندگي ھڪڙي ٻوليءَ کان ٻي ٻوليءَ ۾ منتقل ڪرڻ ۾ گذاري سگھو ٿا، پنھنجي ضرورتن لاءِ ڀرپور ميلاپ ڳولڻ جي ڪوشش ڪري سگھو ٿا، يا توھان ٻولين کي اوزار طور سوچڻ شروع ڪري سگھو ٿا. PHP جهڙي ٻوليءَ جي سمجهايل خاميون اصل ۾ ان جي ڪاميابيءَ جو سبب ٿي سگهن ٿيون. ۽ جيڪڏھن توھان ان کي ٻي ٻوليءَ سان گڏ ڪريو جھڙوڪ Go، پوءِ توھان ٺاھيندؤ گھڻو وڌيڪ طاقتور پراڊڪٽس ان کان سواءِ جيڪڏھن توھان محدود ھئا ڪنھن ھڪڙي ٻولي کي استعمال ڪرڻ تائين.

Go ۽ PHP جي هڪ گروپ سان ڪم ڪيو، اسان اهو چئي سگهون ٿا ته اسان انهن سان پيار ڪندا آهيون. اسان هڪ ٻئي لاءِ قربان ڪرڻ جو ارادو نه ٿا رکون - ان جي برعڪس، اسان هن ڊبل اسٽيڪ مان اڃا به وڌيڪ قيمت حاصل ڪرڻ جا طريقا ڳوليندا سين.

UPD: اسان روڊ رنر جي خالق ۽ اصل مضمون جي گڏيل ليکڪ کي ڀليڪار ڪيون ٿا - لاچيسس

جو ذريعو: www.habr.com

تبصرو شامل ڪريو