Mhoro, Habr! Tiri kushanda paBadoo
Mumakore achangopfuura, PHP yakafambira mberi zvikuru: muunganidzi wemarara akavandudza, chiyero chekugadzikana chakawedzera - nhasi unogona kunyora madhimoni uye zvinyorwa zvenguva refu muPHP pasina matambudziko. Izvi zvakabvumira Spiral Scout kuti ienderere mberi: RoadRunner, kusiyana nePHP-FPM, haichenese ndangariro pakati pezvikumbiro, izvo zvinopa mamwe mabhenefiti ekuita (kunyangwe nzira iyi inokanganisa maitiro ebudiriro). Parizvino tiri kuedza kushandisa chishandiso ichi, asi hatisati tave nemhinduro dzekugovera. Kuti zviwedzere kunakidza kuvamirira, Tiri kuburitsa shanduro yeRoadRunner chiziviso kubva kuSpiral Scout.
Maitiro anobva kuchinyorwa ari padyo nesu: pakugadzirisa matambudziko edu, isu zvakare tinowanzo shandisa musanganiswa wePP uye Go, tichiwana mabhenefiti emitauro miviri uye kusakanda mapfumo pasi mumwe uchifarira mumwe.
Kwemakore gumi apfuura, takagadzira zvikumbiro zvemakambani kubva pane rondedzero
Nenguva isipi, takaona kuti Go yakatibvumira kuvaka maapplication akakura anosvika makumi mana ekukurumidza kuita. Nayo, takakwanisa kuwedzera zvigadzirwa zvakanyorwa muPHP, tichizvivandudza nekubatanidza zvakanakira mitauro miviri.
Isu tichakuudza kuti musanganiswa weGo uye PHP unobatsira sei kugadzirisa matambudziko chaiwo ebudiriro uye kuti yachinja sei kuita chishandiso kwatiri chinogona kubvisa mamwe matambudziko ane chekuita ne
Yako Yemazuva ese PHP Yekuvandudza Nzvimbo
Tisati tataura nezve mashandisiro aungaite Enda kumutsidzira PHP iri kufa modhi, ngatitarisei yako yakajairwa PHP budiriro nharaunda.
Kazhinji, iwe unomhanyisa chishandiso uchishandisa musanganiswa wenginx web server uye PHP-FPM server. Yekutanga inoshandisa static mafaera uye inodzosera zvakanangana zvikumbiro kuPP-FPM, uye PHP-FPM pachayo inoita PHP kodhi. Pamwe uri kushandisa isinganyanyozivikanwa musanganiswa kubva kuApache uye mod_php. Asi kunyange zvazvo inoshanda zvishoma zvakasiyana, nheyo dzakafanana.
Ngatitarisei kuti PHP-FPM inoita sei kodhi yekushandisa. Kana chikumbiro chasvika, PHP-FPM inotangisa chirongwa chemwana PHP uye inopa ruzivo rwekukumbira sechikamu chenyika yayo (_GET, _POST, _SERVER, etc.).
Iyo nyika haigone kuchinja panguva yekuitwa kweiyo PHP script, saka kune nzira imwe chete yekuwana seti nyowani ye data yekuisa: nekubvisa iyo ndangariro yemaitiro uye kuitangazve.
Iyi modhi yekuuraya ine zvakawanda zvakanakira. Iwe haufanirwe kunetseka zvakanyanya nezve mashandisiro endangariro, maitiro ese akaparadzaniswa zvachose, uye kana imwe yadzo ikafa, inozogadziriswa otomatiki pasina kukanganisa mamwe maitiro. Asi nzira iyi zvakare ine zvayakaipira zvinoonekwa kana uchiedza kuyera application.
Kuipa uye kusashanda kweiyo yenguva dzose PHP nharaunda
Kana iwe uri kuita hunyanzvi hwekuvandudza muPHP, saka iwe unoziva kwekutanga chirongwa chitsva - nekusarudza chimiro. Iyo ine maraibhurari ekutsamira jekiseni, ORMs, shanduro uye matemplate. Uye zvechokwadi, ese ekushandisa mushandisi anogona kuiswa zviri nyore muchinhu chimwe (Symfony/HttpFoundation kana PSR-7). Frameworks dzakanaka!
Asi zvese zvine mutengo wazvo. Mune chero bhizinesi-chikamu chimiro, kugadzirisa chikumbiro chakareruka chemushandisi kana kuwana dhatabhesi, iwe uchafanirwa kurodha angangoita gumi nemaviri emafaira, kugadzira akawanda makirasi uye kurongedza akati wandei magadzirirwo. Asi chakanyanya kuipa ndechekuti mushure mekupedza basa rega rega iwe uchada kugadzirisa zvese uye wotanga zvakare: iyo kodhi yese yawachangotanga inova isina basa, nerubatsiro rwayo hauchazogadziri chimwe chikumbiro. Udza izvi kune chero programmer anonyora mune chero mumwe mutauro, uye iwe uchaona kuvhiringidzika pachiso chake.
PHP mainjiniya vakapedza makore vachitsvaga nzira dzekugadzirisa dambudziko iri, vachishandisa akangwara simbe kurodha nzira, microframeworks, optimized maraibhurari, cache, etc. Asi pakupedzisira, uchiri kufanira reset yose Anwendung uye kutanga pamusoro, zvakare uye zvakare. (Chinyorwa cheMushanduri: dambudziko iri richagadziriswa zvishoma nekuuya kwe
PHP ine Go inogona kurarama zvinopfuura chikumbiro chimwe chete?
Zvinokwanisika kunyora PHP zvinyorwa zvinogara kwenguva refu kupfuura maminetsi mashoma (kusvika maawa kana mazuva): semuenzaniso, cron mabasa, CSV parsers, queue busters. Vese vanoshanda zvinoenderana nemamiriro akafanana: vanotora basa, voriita, uye vanomirira rinotevera. Iyo kodhi inogara mundangariro, ichichengetedza akakosha milliseconds sezvo akawanda ekuwedzera matanho anodiwa kurodha chimiro uye kushandisa.
Asi kugadzira zvinyorwa zvenguva refu hazvisi nyore. Chero kukanganisa kunouraya zvachose maitiro, kuongorora ndangariro kuvuza kunokupengesa, uye hauchakwanisa kushandisa F5 debugging.
Mamiriro acho akavandudzwa nekuburitswa kwePHP 7: muunganidzi wemarara akavimbika akaonekwa, zvave nyore kubata zvikanganiso, uye kernel extensions ikozvino yakadzivirirwa kubva pakudonha. Ichokwadi, mainjiniya achiri kuda kungwarira nekuyeuka uye kuziva nezvenyaya dzehurumende mukodhi (pane mutauro watisingafaniri kunetseka pamusoro pezvinhu izvi?). Uye zvakadaro, muPHP 7, zvishoma zvinoshamisa zvakatimirira.
Zvinogoneka here kutora modhi yekushanda neakarebesa PHP zvinyorwa, kuigadzirisa kune mamwe mabasa asina musoro sekugadzirisa zvikumbiro zveHTTP, uye nekudaro kubvisa kudiwa kwekurodha zvese kubva pakatanga pachikumbiro chega chega?
Kuti tigadzirise dambudziko iri, isu takatanga tashandisa sevha application iyo inogona kugamuchira zvikumbiro zveHTTP uye tozvitumira imwe neimwe kune mushandi wePP pasina kuiuraya nguva dzese.
Isu taiziva kuti taigona kunyora webhu server mune yakachena PHP (PHP-PM) kana kushandisa C yekuwedzera (Swoole). Uye kunyangwe imwe neimwe nzira ine kwayo kwayo, sarudzo dzese hadzina kuenderana nesu - isu taida chimwe chinhu. Isu taida zvinopfuura sevha yewebhu - taitarisira kuwana mhinduro inogona kutiponesa kubva kumatambudziko ane chekuita ne "kuoma kutanga" muPHP, iyo panguva imwechete yaigona kuchinjika nyore uye kuwedzerwa kune chaiwo maapplication. Kureva kuti taida application server.
Can Go help with this? Taiziva kuti zvaigona nokuti mutauro unounganidza zvikumbiro kuva mabhinari mamwe chete; iri cross-platform; inoshandisa yayo, yakanakisa, yakafanana yekugadzirisa modhi (concurrency) uye raibhurari yekushanda neHTTP; uye pakupedzisira, zviuru zveakavhurika-sosi maraibhurari uye masanganiswa achawanikwa kwatiri.
Zvinetso zvekubatanidza mitauro miviri yekuronga
Danho rekutanga rakanga riri rekuona kuti mafomu maviri kana kupfuura aizotaurirana sei.
Somuenzaniso, kushandisa
Isu takasarudza kushandisa imwe, yakajairika, nzira: kuvaka kudyidzana pakati pemaitiro kuburikidza nezvigadziko / mapaipi. Iyi nzira yakaratidza kuvimbika kwayo mumakumi emakore apfuura uye yakagadziridzwa zvakanaka padanho rekushandisa system.
Kutanga, takagadzira yakapfava bhinari protocol yekuchinjana data pakati pemaitiro uye kubata zvikanganiso zvekutapurirana. Muchimiro chayo chakareruka, rudzi urwu rweprotocol rwakafanana ne
Kudivi rePP takashandisa
Zvaiita sekuti imwe protocol yanga isina kukwana - saka takawedzera kugona kufona
Kugovera mabasa kune akawanda PHP vashandi
Mushure mekuita nzira yekudyidzana, takatanga kufunga nezve nzira yekunyatso kuendesa mabasa kune PHP maitiro. Kana basa rasvika, sevha yekushandisa inofanirwa kusarudza mushandi wemahara kuti apedze. Kana mushandi / chirongwa chikapera nekukanganisa kana "kufa," tinoibvisa uye kugadzira imwe nyowani yekuitsiva. Uye kana mushandi / maitiro apedza zvinobudirira, tinodzosera kune dziva revashandi varipo kuti vaite mabasa.
Kuchengeta dziva revashandi vanoshanda vataishandisa
Nekuda kweizvozvo, takagamuchira inoshanda PHP server inokwanisa kugadzirisa chero zvikumbiro zvinounzwa mune binary fomu.
Kuti application yedu ishande sewebhu server, taifanira kusarudza yakavimbika PHP standard kumiririra chero zvikumbiro zvinouya zveHTTP. Kwatiri isu chete
Nekuti PSR-7 inoonekwa seisingachinjike (vamwe vangati tekinoroji haisi iyo), vagadziri vanofanirwa kunyora zvikumbiro zvisinganyatso kubata chikumbiro sechinhu chepasi rose. Izvi zvinonyatsoenderana nepfungwa yekugara kwenguva refu PHP maitiro. Kuitwa kwedu kwekupedzisira, kwanga kusati kwadomwa zita, kwakataridzika seizvi:
Kusuma RoadRunner - yakakwirira-inoshanda PHP application server
Basa redu rekutanga rekuyedza raive API backend, iyo nguva nenguva yaisangana nekuputika kusingatarisirwe kwezvikumbiro (kazhinji kazhinji kupfuura zvakajairwa). Kunyange zvazvo nginx yakanga yakakwana muzviitiko zvakawanda, taigara tichisangana nezvikanganiso zve 502 nokuti taisakwanisa kuenzanisa hurongwa nokukurumidza zvakakwana nokuda kwekuwedzera kunotarisirwa mumutoro.
Kutsiva iyi mhinduro, takaisa yedu yekutanga PHP/Go application server mukutanga kwa2018. Uye pakarepo takawana incredible effect! Hatina kungobvisa zvachose kukanganisa kwe502, asi takakwanisawo kuderedza nhamba yemaseva nezvikamu zviviri kubva muzvitatu, kuchengetedza mari yakawanda uye misoro yeinjiniya uye vatungamiri vezvigadzirwa.
Pakazosvika pakati pegore, isu takanga tagadzirisa mhinduro yedu, takaiburitsa paGitHub pasi peMIT rezenisi, ndokuidaidza.
Nzira yeRoadRunner Inogona Kuvandudza Yako Yekuvandudza Stack
Kushanda
Kutenda kune yakavakirwa-mukati RPC, unogona kuvhura iyo API yechero Go maraibhurari ePP pasina kunyora ekuwedzera wrappers. Zvinotonyanya kukosha, RoadRunner inogona kushandiswa kuendesa maseva matsva asiri eHTTP. Mienzaniso inosanganisira kutanga vanobata muPHP
Nerubatsiro rwePHP neGo nharaunda, takawedzera kugadzikana kwemhinduro, takawedzera mashandiro ekushandisa kusvika ku40 nguva mune dzimwe bvunzo, yakagadziridzwa maturusi ekugadzirisa, kushandiswa kwekubatanidza neSymfony framework, uye kuwedzera rutsigiro rweHTTPS, HTTP/ 2, plugins, uye PSR-17.
mhedziso
Vamwe vanhu vachiri kubatwa mukuona kwechinyakare kwePHP semutauro unononoka, wakaoma wakanakira kunyora WordPress plugins. Vanhu ava vangatotaura kuti PHP ine painogumira: kana application yacho yakura zvakakwana, iwe unofanirwa kusarudza mutauro "wakakura" uye wonyora patsva nheyo yekodhi yakaunganidzwa kwemakore mazhinji.
Kune izvi zvose ndinoda kupindura: funga zvakare. Isu tinotenda kuti iwe chete ndiwe unogona kuseta chero zvirambidzo zvePHP. Unogona kupedza hupenyu hwako hwese uchisvetuka kubva kune mumwe mutauro uchienda kune mumwe, uchiedza kutsvaga wakakwana wezvaunoda, kana iwe unogona kutanga kufunga mitauro sezvishandiso. Izvo zvinofungidzirwa kukanganisa kwemutauro wakaita sePHP zvinogona kunge zviri izvo zvikonzero zvekubudirira kwayo. Uye kana ukaisanganisa nemumwe mutauro wakaita seGo, unogona kugadzira zvigadzirwa zvine simba zvakanyanya kupfuura dai waingogumira kumutauro mumwe chete.
Tashanda nemusanganiswa weGo uye PHP, tinogona kutaura kuti tinovada. Isu hatironge kubayira imwe kune imwe, asi kuti titsvage nzira dzekuwana kukosha kwakawanda kubva mune iyi mbiri stack.
UPD: Tinogamuchira mugadziri weRoadRunner uye munyori-mubatsiri wechinyorwa chekutanga -
Source: www.habr.com