Sawubona, Habr! Sisebenza e-Badoo
Eminyakeni yamuva, i-PHP yenze intuthuko enkulu: umqoqi kadoti uthuthukile, izinga lokuzinza liye landa - namuhla ungabhala ama-daemon nemibhalo ehlala isikhathi eside ku-PHP ngaphandle kwezinkinga. Lokhu kuvumele i-Spiral Scout ukuthi iqhubekele phambili: I-RoadRunner, ngokungafani ne-PHP-FPM, ayihlanzi inkumbulo phakathi kwezicelo, okunikeza izinzuzo ezengeziwe zokusebenza (nakuba le ndlela yenza inqubo yokuthuthukiswa ibe nzima). Okwamanje sizama leli thuluzi, kodwa asinayo imiphumela esingabelana ngayo okwamanje. Ukwenza kube mnandi ukubalinda, Sishicilela ukuhumusha kwesimemezelo se-RoadRunner esivela ku-Spiral Scout.
Indlela evela esihlokweni iseduze nathi: lapho sixazulula izinkinga zethu, sivame ukusebenzisa inhlanganisela ye-PHP ne-Go, sithola izinzuzo zazo zombili izilimi futhi singayeki eyodwa sivuna enye.
Kule minyaka eyishumi edlule, sidale izicelo zezinkampani ezisohlwini
Cishe ngokushesha, sithole ukuthi i-Go isivumele ukuthi sakhe izinhlelo zokusebenza ezinkulu ezinokusebenza okusheshayo okungafika ku-40x. Ngayo, sikwazile ukwandisa imikhiqizo ekhona ebhalwe nge-PHP, siyithuthukise ngokuhlanganisa izinzuzo zazo zombili izilimi.
Sizokutshela ukuthi inhlanganisela ye-Go ne-PHP isiza kanjani ukuxazulula izinkinga zangempela zentuthuko nokuthi isiphenduke kanjani ithuluzi lethu elingaqeda ezinye zezinkinga ezihlobene
Imvelo Yakho Yokuthuthukiswa Kwe-PHP Yansuku zonke
Ngaphambi kokuthi sikhulume ngokuthi ungasebenzisa kanjani i-Go ukuze uvuselele imodeli efayo ye-PHP, ake sibheke indawo yakho evamile yokuthuthukiswa kwe-PHP.
Ezimweni eziningi, usebenzisa uhlelo lokusebenza usebenzisa inhlanganisela yeseva yewebhu ye-nginx kanye neseva ye-PHP-FPM. Eyokuqala isebenzela amafayela amile futhi iqondise kabusha izicelo ezithile ku-PHP-FPM, futhi i-PHP-FPM ngokwayo isebenzisa ikhodi ye-PHP. Mhlawumbe usebenzisa inhlanganisela engaziwa kancane evela ku-Apache ne-mod_php. Kodwa nakuba isebenza ngokuhlukile kancane, izimiso ziyefana.
Ake sibheke ukuthi i-PHP-FPM iyenza kanjani ikhodi yohlelo lokusebenza. Lapho isicelo sifika, i-PHP-FPM iqalisa inqubo ye-PHP yengane futhi idlulise imininingwane yesicelo njengengxenye yesimo sayo (_GET, _POST, _SERVER, njll.).
Isimo asikwazi ukushintsha ngesikhathi kusetshenziswa iskripthi se-PHP, ngakho-ke kunendlela eyodwa kuphela yokuthola isethi entsha yedatha yokufaka: ngokusula inkumbulo yenqubo futhi uyiqalise kabusha.
Le modeli yokubulawa inezinzuzo eziningi. Akudingeki ukhathazeke kakhulu ngokusetshenziswa kwenkumbulo, zonke izinqubo zihlukanisiwe ngokuphelele, futhi uma enye yazo ifa, izokwenziwa kabusha ngokuzenzakalelayo ngaphandle kokuthinta ezinye izinqubo. Kodwa le ndlela futhi inemibi evela lapho uzama ukukala uhlelo lokusebenza.
Ukubi nokungasebenzi kahle kwemvelo ye-PHP evamile
Uma ubambe iqhaza ekuthuthukisweni kochwepheshe ku-PHP, khona-ke uyazi ukuthi ungaqala kuphi iphrojekthi entsha - ngokukhetha uhlaka. Iqukethe imitapo yolwazi yomjovo wokuncika, ama-ORM, ukuhumusha nezifanekiso. Futhi-ke, konke okokufaka komsebenzisi kungafakwa kalula entweni eyodwa (Symfony/HttpFoundation noma i-PSR-7). Amafreyimu apholile!
Kodwa yonke into inenani layo. Kunoma yiluphi uhlaka lwezinga lebhizinisi, ukucubungula isicelo esilula somsebenzisi noma ukufinyelela kusizindalwazi, kuzodingeka ukuthi ulayishe okungenani inqwaba yamafayela, udale amakilasi amaningi futhi uhlukanise ukucupha okuningi. Kodwa into embi kakhulu ukuthi ngemva kokuqeda umsebenzi ngamunye uzodinga ukusetha kabusha yonke into futhi uqale futhi: yonke ikhodi osanda kuyiqala iba yize, ngosizo lwayo ngeke usacubungula esinye isicelo. Tshela lokhu kunoma yimuphi umhleli obhala nganoma yiluphi olunye ulimi, futhi uzobona ukudideka ebusweni bakhe.
Onjiniyela be-PHP bachithe iminyaka befuna izindlela zokuxazulula le nkinga, besebenzisa amasu ahlakaniphile okulayisha avilaphayo, ama-microframeworks, imitapo yolwazi ethuthukisiwe, izinqolobane, njll. Kodwa ekugcineni, kusamele usethe kabusha lonke uhlelo lokusebenza bese uqala kabusha, futhi futhi. (Inothi lomhumushi: le nkinga izoxazululwa kancane ngokufika kwe
Ingabe i-PHP ene-Go ingasinda kwisicelo esingaphezu kwesisodwa?
Kungenzeka ukuthi ubhale imibhalo ye-PHP ezohlala isikhathi eside kunemizuzu embalwa (kufika emahoreni noma izinsuku): isibonelo, imisebenzi ye-cron, abahlaluli be-CSV, amabhasi omugqa. Wonke asebenza ngokwesimo esifanayo: athola umsebenzi, awenze, bese elinda olandelayo. Ikhodi ihlala enkumbulweni, ilondoloza ama-millisecond ayigugu njengoba kudingeka izinyathelo eziningi ezengeziwe ukuze kulayishwe uhlaka nokusetshenziswa.
Kodwa ukwakha imibhalo ehlala isikhathi eside akulula kangako. Noma yiliphi iphutha liyibulala ngokuphelele inqubo, ukuhlonza ukuvuza kwememori kuyakuhlanyisa, futhi awusakwazi ukusebenzisa ukulungisa iphutha kwe-F5.
Isimo siye sathuthuka ngokukhululwa kwe-PHP 7: kuvele umqoqi wezibi onokwethenjelwa, kube lula ukuphatha amaphutha, futhi izandiso ze-kernel manje zivikelekile ekuvuzeni. Yiqiniso, onjiniyela basadinga ukuqaphela inkumbulo futhi baqaphele izindaba zombuso kukhodi (ingabe lukhona ulimi lapho kungadingeki sikhathazeke ngalezi zinto?). Futhi nokho, ku-PHP 7, izimanga ezimbalwa zisilindile.
Kungenzeka yini ukuthatha imodeli yokusebenza ngemibhalo ye-PHP ephile isikhathi eside, uyivumelanise nemisebenzi emincane efana nokucubungula izicelo ze-HTTP, bese ususa isidingo sokulayisha yonke into kusukela ekuqaleni kwesicelo ngasinye?
Ukuze sixazulule le nkinga, siqale sidinga ukusebenzisa uhlelo lokusebenza lweseva olungamukela izicelo ze-HTTP futhi sizidlulisele ngakunye kusisebenzi se-PHP ngaphandle kokusibulala ngaso sonke isikhathi.
Besazi ukuthi singabhala iseva yewebhu nge-PHP emsulwa (PHP-PM) noma sisebenzisa isandiso se-C (Swoole). Futhi nakuba indlela ngayinye inokufaneleka kwayo, zombili izinketho azizange zisifanele - besifuna okunye okwengeziwe. Besidinga okungaphezu nje kweseva yewebhu - besithemba ukuthi sizothola isixazululo esingasisindisa ezinkingeni ezihlobene "nokuqala kanzima" ku-PHP, ngesikhathi esifanayo esingashintshwa kalula futhi sandiswe ezinhlelweni ezithile. Okusho ukuthi, besidinga iseva yohlelo lokusebenza.
Ungakwazi ukusiza ngalokhu? Besazi ukuthi kungenzeka ngoba ulimi luhlanganisa izinhlelo zokusebenza zibe ngamabhanari owodwa; iyi-cross-platform; isebenzisa eyakhe, nenhle kakhulu, imodeli yokucubungula okufanayo (concurrency) kanye nomtapo wolwazi wokusebenza ne-HTTP; futhi ekugcineni, izinkulungwane zemitapo yolwazi evulekile kanye nokuhlanganiswa kuzotholakala kithi.
Ubunzima bokuhlanganisa izilimi ezimbili zokuhlela
Isinyathelo sokuqala kwakuwukunquma ukuthi izicelo ezimbili noma ngaphezulu zizoxhumana kanjani.
Ngokwesibonelo, ngokusebenzisa
Sinqume ukusebenzisa enye indlela, ejwayelekile kakhulu: ukwakha ukuxhumana phakathi kwezinqubo ngokusebenzisa amasokhethi/amapayipi. Le ndlela ifakazele ukwethembeka kwayo emashumini eminyaka adlule futhi ithuthukiswe kahle ezingeni lesistimu yokusebenza.
Okokuqala, sidale inqubo kanambambili elula yokushintshisana ngedatha phakathi kwezinqubo nokusingatha amaphutha okudlulisela. Ngendlela elula, lolu hlobo lwephrothokholi lufana ne
Ohlangothini lwe-PHP sisebenzise
Kithina kwabonakala sengathi umthetho olandelwayo owodwa ayanele - ngakho-ke sengeze ikhono lokushaya ucingo
Ukusabalalisa imisebenzi kubasebenzi abaningi be-PHP
Ngemuva kokusebenzisa indlela yokusebenzisana, saqala ukucabanga ngendlela yokudlulisa ngempumelelo imisebenzi kuzinqubo ze-PHP. Lapho umsebenzi ufika, iseva yesicelo kufanele ikhethe isisebenzi samahhala ukuze siwuqedele. Uma isisebenzi/inqubo inqanyulwa ngephutha noma “sifa,” siyayisusa bese sidala entsha esizoyishintsha. Futhi uma isisebenzi/inqubo iqedwe ngempumelelo, siyibuyisela kubasebenzi abakhona ukuze benze imisebenzi.
Ukugcina inqwaba yabasebenzi abakhuthele sasisebenzisa
Ngenxa yalokho, sithole iseva esebenzayo ye-PHP ekwazi ukucubungula noma yiziphi izicelo ezethulwa ngefomu kanambambili.
Ukuze uhlelo lwethu lokusebenza lusebenze njengeseva yewebhu, bekufanele sikhethe izinga elithembekile le-PHP ukumela noma yiziphi izicelo ze-HTTP ezingenayo. Esimweni sethu nje
Ngenxa yokuthi i-PSR-7 ithathwa njengengaguquleki (abanye bangasho ngokobuchwepheshe akunjalo), onjiniyela kufanele babhale izinhlelo zokusebenza ezingasiphathi isicelo njengebhizinisi lomhlaba jikelele. Lokhu kufanelana kahle nomqondo wezinqubo ze-PHP ezihlala isikhathi eside. Ukuqaliswa kwethu kokugcina, ebekungakaqanjwa, kubukeke kanje:
Sethula i-RoadRunner - iseva yesicelo se-PHP esebenza kahle kakhulu
Umsebenzi wethu wokuqala wokuhlola bekuwukubuyela emuva kwe-API, eyenzeka ngezikhathi ezithile ukuqhuma okungalindelekile kwezicelo (kaningi kunokujwayelekile). Nakuba i-nginx yayanele ezimweni eziningi, sasihlala sihlangabezana namaphutha angu-502 ngoba asikwazanga ukulinganisa isistimu ngokushesha ngokwanele ukuze kukhuliswe umthwalo olindelekile.
Ukushintsha lesi sixazululo, sithumele iseva yethu yokuqala ye-PHP/Go ekuqaleni kuka-2018. Futhi ngokushesha sathola umphumela omangalisayo! Asizange nje silahle ngokuphelele iphutha le-502, kodwa sakwazi nokunciphisa inani lamaseva ngokuphindwe kabili kwezintathu, silondoloza imali eningi kanye nekhanda elibuhlungu konjiniyela nabaphathi bemikhiqizo.
Maphakathi nonyaka, sase sifeze isixazululo sethu, sasishicilela ku-GitHub ngaphansi kwelayisensi ye-MIT, futhi sayibiza ngokuthi.
I-RoadRunner Ingasithuthukisa Kanjani Isitaki Sakho Sokuthuthukiswa
Isicelo
Ngenxa ye-RPC eyakhelwe ngaphakathi, ungakwazi ukuvula i-API yanoma imaphi amalabhulali we-Go we-PHP ngaphandle kokubhala izengezo zokugoqa. Okubaluleke nakakhulu, i-RoadRunner ingasetshenziselwa ukukhipha amaseva amasha angewona awe-HTTP. Izibonelo zifaka izibambi zokuqalisa ku-PHP
Ngosizo lwemiphakathi ye-PHP ne-Go, sikhulise ukuzinza kwesixazululo, sandisa ukusebenza kohlelo lokusebenza izikhathi ezingafika kwezingu-40 kwezinye izivivinyo, amathuluzi okulungisa amaphutha athuthukisiwe, ukuhlanganiswa okusetshenziswe ngohlaka lwe-Symfony, nokusekelwa okwengeziwe kwe-HTTPS, i-HTTP/ 2, ama-plugin, kanye ne-PSR-17.
isiphetho
Abanye abantu basabanjwe umbono ophelelwe yisikhathi we-PHP njengolimi olunensayo, olunzima kuphela oluhle lokubhala ama-plugin we-WordPress. Laba bantu bangase bathi i-PHP inomkhawulo: lapho uhlelo lokusebenza luba likhulu ngokwanele, kufanele ukhethe ulimi "oluvuthiwe" futhi ubhale kabusha isisekelo sekhodi esiye sanqwabelana eminyakeni eminingi.
Kukho konke lokhu ngifuna ukuphendula: cabanga futhi. Sikholelwa ukuthi nguwe kuphela ongabeka noma yimiphi imikhawulo ye-PHP. Ungachitha impilo yakho yonke ugxuma usuka kolunye ulimi uye kolunye, uzama ukuthola okufanelana kahle nezidingo zakho, noma ungaqala ukucabanga ngezilimi njengamathuluzi. Ukushiyeka okucatshangwayo kolimi olufana ne-PHP kungase kube izizathu zempumelelo yayo. Futhi uma uyihlanganisa nolunye ulimi olufana ne-Go, ungakha imikhiqizo enamandla kakhulu kunalapho ubukhawulelwe olimini olulodwa kuphela.
Njengoba sisebenze nenhlanganisela ye-Go ne-PHP, singasho ukuthi siyabathanda. Asihlele ukudela esinye ngenxa yokunye, kodwa kunalokho sibheka izindlela zokuthola inani elithe xaxa kulesi sitaki esikabili.
I-UPD: Siyamamukela umdali we-RoadRunner kanye nombhali ohlanganyela naye we-athikili yoqobo -
Source: www.habr.com