áá±áž áá¬á! Badoo ááŸá¬ áá»áœááºáá±á¬áºááá¯á· ááŸá¯ááºááŸá¬ážáá±áá«áááºá
áááŒá¬áá±ážáá®ááŸá áºáá»á¬ážá¡ááœááºážá PHP ááẠááŒá®ážá áœá¬áá±á¬ááá¯ážáááºááŸá¯ááá¯áááŸááá²á·áááº- á¡ááŸáá¯ááºá á¯áá±á¬ááºážáá°ááẠááá¯ážáááºáá¬áááºá áááºááŒáááºááŸá¯á¡ááá·áºááẠááŒáá·áºáááºáá¬áá²á·ááẠ- ááá±á·ááœáẠáááºááẠááŒá¿áá¬áá áºá á¯á¶áá áºáá¬áááŸááá² PHP ááœáẠdaemons ááŸáá·áº áá¬áááŒá¬ááŸááºá áœá¬áá±ááá¯ááºáá²á·áá±á¬ script áá»á¬ážááᯠáá±ážáá¬ážááá¯ááºáááºá áááºážááẠSpiral Scout ááá¯ááá¯ááá¯áá¯ááºáá±á¬ááºááá¯ááºá á±áááº- PHP-FPM ááŸáá·áºááá°áá² RoadRunner ááẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŒá¬ážá០memory ááá¯ááŸááºážáááºážááŒááºážáááŸááá«á áááºážáááºá¡ááá¯á áœááºážáá±á¬ááºáááºááá¯áááŸáá á±ááẠ(á€áá»ááºážáááºááŸá¯áááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá ááºááá¯ááŸá¯ááºááœá±ážáá±á¬áºáááºáž) á áá»áœááºá¯ááºááá¯á·ááẠáá±á¬áá±á¬áááºááœáẠá€áááááá¬ááᯠá ááºážáááºáá±áá±á¬áºáááºáž áá»áŸáá±ááẠáááºááá·áºááááºáá»áŸ áááŸááá±ážáá«á áá°ááá¯á·ááᯠá á±á¬áá·áºááᬠááá¯áá»á±á¬áºááá¯á·á Spiral Scout á០RoadRunner ááŒá±ááŒá¬áá»ááºááᯠáá¬áá¬ááŒááºáá¯ááºáá±áá«áááºá
áá±á¬ááºážáá«ážááŸáá»ááºážáááºáá¯á¶ááẠáá»áœááºá¯ááºááá¯á·ááŸáá·áºáá®ážá ááºáá«áááº- áá»áœááºá¯ááºááá¯á·áááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážáá±á¬á¡áá«ááœááºá áá»áœááºá¯ááºááá¯á·ááẠPHP ááŸáá·áº Go ááá¯á·ááᯠá¡áá»á¬ážáá¯á¶ážá¡áá¯á¶ážááŒá¯áá±á·ááŸáááŒá®áž áá¬áá¬á áá¬ážááŸá áºáá»áá¯ážáá¯á¶ážáá¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážááá¯áááŸááᬠá¡ááŒá¬ážáá áºáá¯ááá»ááºááŸá¬áá¬áá±ážááŸá¯ááá¯áá áœáá·áºááœáŸááºáá² áááŒá¬ááá¡áá¯á¶ážááŒá¯áááºá
áá¶á
á¬ážááŒááºá·áá«!
ááŒá®ážáá²á·áá±á¬ áááºááŸá
áºá¡ááœááºážá áá»áœááºá¯ááºááá¯á·ááẠá
á¬áááºážá០áá¯áá¹ááá®áá»á¬ážá¡ááœáẠáá»áŸá±á¬ááºááœáŸá¬áá»á¬ážááᯠáááºáá®ážáá²á·áááºá
áá»ááºáá»ááºážáá®ážáá«ážá Go ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž á áœááºážáá±á¬ááºááẠ40x á¡áá ááŒáŸáá·áºáááºááŒááºážááŒáá·áº ááá¯ááá¯ááŒá®ážáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáááºáá®ážááá¯ááºá á±ááŒá±á¬ááºáž ááœá±á·ááŸááá²á·áááºá áááºážááŸáá·áºá¡áá°á áá»áœááºá¯ááºááá¯á·ááẠáá¬áá¬á áá¬ážááŸá áºáá»áá¯ážáá¯á¶ážá á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážááᯠáá±á«ááºážá ááºááŒááºážááŒáá·áº áááºážááá¯á·ááᯠááá¯ážáááºáá±á¬ááºážááœááºá á±ááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááááºááŸá PHP áá¯ááºáá¯ááºáá»á¬ážááᯠááá¯ážáá»á²á·ááá¯ááºáá²á·áá«áááºá
Go ááŸáá·áº 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 ááŒáá·áº 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 á á¬ááŒáá·áºááá¯ááºáá»á¬ážááŸáá·áº áá±á«ááºážá ááºááŸá¯áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·áᶠáááŸáááá¯ááºáá«áááºá
áááá¯ááááºážáááºážáá¬áá¬á áá¬ážááŸá áºáá¯ááᯠáá±á«ááºážá ááºááẠáááºáá²ááŒááºážá
ááááŠážá áœá¬á á¡ááá®áá±ážááŸááºážááŸá áºáᯠááá¯á·ááá¯áẠááá¯á·áááºááá¯á áááºááá¯á·áááºááœááºáááºááᯠáá¯á¶ážááŒááºááẠááá¯á¡ááºáá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá¯á¶ážááŒá¯ááŒááºážá
á áá±ážáá»á¬áž/ááá¯ááºááá¯ááºážáá»á¬ážááŸáááá·áº áá¯ááºáááºážá ááºáá»á¬ážá¡ááŒá¬áž á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááᯠáááºáá±á¬ááºááẠááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬á ááá¯áá¬áá±á¬áá»ááºážáááºáááºážááᯠá¡áá¯á¶ážááŒá¯ááẠáá¯á¶ážááŒááºáá²á·áááºá á€áá»ááºážáááºááŸá¯ááẠááœááºáá²á·ááá·áºáááºá á¯ááŸá áºáá»á¬ážá¡ááœááºáž áá¯á¶ááŒááºá áááºáá»áááŒá±á¬ááºáž áááºáá±ááŒáá²á·ááŒá®áž áááºáááºááŸá¯á áá áºá¡ááá·áºááœáẠáá±á¬ááºážááœááºá áœá¬ ááŒá¯ááŒááºáá¬ážáááºá
á
áááºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáááºážá
ááºáá»á¬ážááŸáá·áº áá¯ááºááœáŸáá·áºááŸá¯á¡ááŸá¬ážáá»á¬ážááᯠááá¯ááºááœááºááŒááºážá¡ááŒá¬áž áá±áá¬áááŸááºáááºá¡ááœáẠááá¯ážááŸááºážáá±á¬ ááœááááá¯ááá¯áá±á¬ááᯠáááºáá®ážáá²á·áááºá áááºážáá¡ááá¯ážááŸááºážáá¯á¶ážáá¯á¶á
á¶ááœááºá á€áááá¯ááá¯áá±á¬á¡áá»áá¯ážá¡á
á¬ážááẠá¡áá¬ážáá°ááŒá
áºáááºá
PHP áááºááŸá¬ áá¯á¶ážáááºá
áááá¯ááá¯áá±á¬áá
áºáá¯á ááá¯á¶áá±á¬ááºáá±á¬á·áá°ážááá¯á· áááºáááŒá®áž áá±á«áºááá¯ááá¯ááºáá²á· á
áœááºážáááºááᯠááá·áºáá±ážáá²á·áá«áááºá
PHP áá¯ááºáá¬ážáá»á¬ážá áœá¬á¡ááœáẠá¡áá¯ááºáá»á¬ážááᯠááŒáá·áºáá±ááŒááºážá
á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯ááá¹ááá¬ážááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®ážáá±á¬ááºá PHP áá¯ááºáááºážá ááºáá»á¬ážááá¯á· á¡áá¯ááºáá»á¬ážááœáŸá²ááŒá±á¬ááºážááẠá¡áááá±á¬ááºáá¯á¶ážáááºážáááºážááᯠáá»áœááºá¯ááºááá¯á· á áááºá ááºážá á¬ážáá²á·ááŒáááºá á¡áá¯ááºáá áºáá¯áá±á¬ááºáá¬áá±á¬á¡áá«á á¡ááá®áá±ážááŸááºážáá¬áá¬ááẠáááºážááá¯áá¯ááºáá±á¬ááºááẠá¡ááá²á·áá¯ááºáá¬ážááᯠááœá±ážáá»ááºááááºááŒá áºáááºá á¡áááºá á¡áá¯ááºááá¬áž/áá¯ááºáááºážá ááºááẠá¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááŒá±á¬áá·áº ááá¯á·ááá¯áẠ"áá±áá¯á¶áž" áá«á áááºážááá¯áááºááŸá¬ážááŒá®áž áááºážááá¯á¡á á¬ážááá¯ážáááºá¡ááœáẠá¡áá áºáá áºáá¯áááºáá®ážáá«á á¡áá¯ááºááá¬áž/áá¯ááºáááºážá ááºáá»á¬áž á¡á±á¬ááºááŒááºá áœá¬ ááŒá®ážááŒá±á¬ááºáá«áá á¡áá¯ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááá·áº á¡áá¯ááºááá¬ážáá»á¬ážáᶠááŒááºáá±ážáá«áááºá
áááºááŒáœáá±á¬ á¡áá¯ááºááá¬ážáá»á¬ážá áá±áááºááᯠááááºážáááºážááẠáá»áœááºá¯ááºááá¯á· á¡áá¯á¶ážááŒá¯áá²á·áááºá
ááááºá¡áá±ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠbinary áá¯á¶á á¶ááŒáá·áº áááºááŒáá¬ážááá·áº áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááá·áº á¡áá¯ááºáá¯ááºáá±á¬ PHP áá¬áá¬ááᯠáááŸááá²á·áá«áááºá
áá»áœááºá¯ááºááá¯á·áá¡ááá®áá±ážááŸááºážááẠáááºáá¬áá¬áá
áºáá¯á¡ááŒá
Ạá
áááºáá¯ááºáá±á¬ááºááá¯ááºá
á±áááºá¡ááœáẠá¡ááẠHTTP áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠááá¯ááºá
á¬ážááŒá¯áááºá¡ááœáẠáá¯á¶ááŒááºá
áááºáá»ááá±á¬ PHP á
á¶ááŸá¯ááºážáá
áºáá¯ááᯠááœá±ážáá»ááºááááºááŒá
áºáááºá áá«ááá¯á·ááá
á¹á
ááŸá¬á
PSR-7 ááᯠáááŒá±á¬ááºážáá²ááá¯ááºáᯠáá°ááá±á¬ááŒá±á¬áá·áº (á¡áá»áá¯á·á áááºážááá¬á¡á áááºážááá¯ááºáᯠááá¯ááá¯ááºáááº)á developer áá»á¬ážááẠáá±á¬ááºážááá¯ááŸá¯ááᯠááá¹áá¬áá¯á¶ážááá¯ááºáᬠá¡ááœá²á·á¡á ááºážáá áºáá¯á¡áá±ááŒáá·áº áá°á¡á ááááºáá¶áá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬áž áá±ážáá¬ážááẠááá¯á¡ááºáááºá áááºážááẠáá¬ááŸááºáᶠPHP áá¯ááºáááºážá ááºáá»á¬ážá ááá±á¬ááá¬ážááŸáá·áº ááá¯ááºáá®áá«áááºá á¡áááºááá±á¬áºááá±ážááá·áº áá»áœááºá¯ááºááá¯á·á áá±á¬ááºáá¯á¶ážá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááºá
RoadRunner ááááºáááºááŒááºáž - á
áœááºážáá±á¬ááºáááºááŒáá·áºáá¬ážáá±á¬ PHP á¡ááá®áá±ážááŸááºážáá¬áá¬
áá»áœááºá¯ááºááá¯á·áááááá¯á¶ážá ááºážáááºááŸá¯áá¬áááºááŸá¬ á¡áá»áááºá¡áá«á¡á¬ážáá»á±á¬áºá áœá¬ ááŸááºážááááá±á¬áá±á«ááºááœá²ááœááºáá±áá±á¬ API áá±á¬ááºááœááºááœááºááŒá áºááẠ(áá¯á¶ááŸááºáááºáá»á¬ážá áœá¬ááá¯ááááŒá¬áá)á á¡áá»á¬ážá á¯ááœáẠnginx ááẠáá¯á¶áá±á¬ááºáá±á¬áºáááºážá áá»áœááºá¯ááºááá¯á·ááẠáá»áŸá±á¬áºááŸááºážáá¬ážáá±á¬ load ááá¯ážáá¬ááŸá¯á¡ááœáẠá áá áºá¡á¬áž áá»ááºááŒááºá áœá¬áá»áááºááœááºáá»áŸá¬áááŸáááá¯ááºáá±á¬ááŒá±á¬áá·áº 502 á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠáá¯á¶ááŸááºááŒá¯á¶ááœá±á·áá±ááá«áááºá
á€ááŒá±ááŸááºážáá»ááºááᯠá¡á á¬ážááá¯ážáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áááááá¯á¶áž PHP/Go á¡ááá®áá±ážááŸááºážáá¬áá¬ááᯠ2018 áá¯ááŸá áºá¡á á±á¬ááá¯ááºážááœáẠá¡áá¯á¶ážááŒá¯áá²á·áááºá ááŒá®ážâáá±á¬á· ááá¯á¶ááá¯ááºâáá±á¬ááºâáá²á· á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááᯠáá»ááºáá»ááºážááá²á·áááºâá áá»áœááºá¯ááºááá¯á·ááẠ502 á¡ááŸá¬ážááᯠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áááºááŸá¬ážááá¯ááºáá¯á¶áá¬áááá² áá¬áá¬áá»á¬ážá á¡áá±á¡ááœááºááᯠáá¯á¶ážáá¯á¶ááŸá áºáá¯á¶á¡áá áá»áŸá±á¬á·áá»ááá¯ááºáá²á·ááŒá®áž á¡ááºáá»ááºáá®áá¬áá»á¬ážááŸáá·áº áá¯ááºáá¯ááºáááºáá±áá»á¬áá»á¬ážá¡ááœáẠááœá±áá»á¬ážá áœá¬ áá»áœá±áá¬ááá¯ááºáá²á·ááŒá®áž áá±á«ááºážááá¯ááºáá±ážááŒá¬ážáá»á¬ážááᯠáááºáá¬á á±áá²á·áááºá
ááŸá
áºáááºááá¯ááºážááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áááŒá±ááŸááºážáá»ááºááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºáá²á·ááŒá®áž áááºážááᯠMIT ááá¯ááºá
ááºá¡á±á¬ááºááœáẠGitHub ááœááºáá¯ááºáá±ááŒá®áž áááºážááá¯á¡áááºáá±ážáá²á·áááºá
RoadRunner ááẠáááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ á¡á á¯á¡áá±ážááᯠáááºáá²á·ááá¯á· ááŒáŸáá·áºáááºááá¯ááºáááºáááºážá
ááŒáŸá±á¬áá»ááŸá¬
built-in RPC ááŒá±á¬áá·áºá extension wrappers ááá±ážáá² PHP á¡ááœáẠGo libraries áá»á¬ážá API ááᯠáááºááœáá·áºááá¯ááºáááºá ááá¯áá¡áá±ážááŒá®ážáááºááŸá¬ RoadRunner ááŒáá·áº áááºááẠHTTP ááá¯ááºáá±á¬ áá¬áá¬á¡áá
áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá á¥ááá¬áá»á¬ážááœáẠPHP ááœáẠrun handlers áá»á¬ážáá«áááºáááºá
PHP ááŸáá·áº Go á¡ááá¯ááºážá¡ááá¯ááºážáá»á¬ážáá¡áá°á¡áá®ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠááŒá±ááŸááºážáá»ááºááááºááŒáááºááŸá¯ááᯠááŒáŸáá·áºáááºáá±ážáá²á·ááŒá®áž á¡áá»áá¯á·áá±á¬á ááºážáááºááŸá¯áá»á¬ážááœáẠá¡ááá®áá±ážááŸááºážá áœááºážáá±á¬ááºáááºááᯠá¡á 40 á¡ááááá¯ážááŒáá·áºá á±áá¬á ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬á¡ááŸá¬ážááŸá¬ááŒááºáááááá¬áá»á¬ážá Symfony framework ááŸáá·áº áá±á«ááºážá ááºááá·áºááœááºážáá¬ážááŒááºážá HTTPSá HTTP/2 á¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážááŸá¯áá»á¬ážá ááááºá¡ááºáá»á¬ážááŸáá·áº PSR-17á
áá±á¬ááºáá»ááº
á¡áá»áá¯á·áá±á¬áá°áá»á¬ážááẠWordPress á¡ááœáẠááááºá¡ááºáá»á¬ážááᯠáá±ážáá¬ážááŒááºážá¡ááœááºáᬠáá±á¬ááºážááœááºáá±á¬ ááŸá±ážááœá±ážáá±á¬ áá¬áá¬á áá¬ážáá áºáá¯á¡ááŒá ẠPHP á áá±ááºááá®áá±á¬ á¡áá°á¡áááœáẠá áœá²áááºáá±ááŒáá²ááŒá áºáááºá PHP ááŸá¬ ááá·áºáááºáá»ááºáá áºáá¯ááŸááááºá áá®áá°ááœá±á á¡ááá®áá±ážááŸááºážááœá± ááŒá®ážáá¬áá²á·á¡áá«á ááá¯ááŒá®áž âááá·áºáá»ááºáá²á·â áá¬áá¬á áá¬ážááᯠááœá±ážáá»ááºááŒá®áž ááŸá áºáá±á«ááºážáá»á¬ážá áœá¬ á á¯áá±á¬ááºážáá¬ážáá²á· áá¯ááºá¡ááŒá±áá¶ááᯠááŒááºáá±ážááá«áááºá
áá«ááœá±á¡á¬ážáá¯á¶ážá¡ááœáẠáá«ááŒá±áá»ááºáááº- ááŒááºá ááºážá á¬ážáá«á PHP á¡ááœáẠááá·áºáááºáá»ááºáá»á¬ážááᯠáááºáá¬áá»áŸáẠáááºááŸááºáááºáᯠáá»áœááºá¯ááºááá¯á· áá¯á¶ááŒááºáá«áááºá ááá·áºáááá áºáá¯áá¯á¶ážááᯠáá¬áá¬á áá¬ážáá áºáá¯á០á¡ááŒá¬ážáá áºáá¯ááá¯á· áá°ážááŒá±á¬ááºážáá¯á¶ážá áœá²ááá¯ááºááŒá®áž ááá·áºááá¯á¡ááºáá»ááºáá»á¬ážá¡ááœáẠááŒá®ážááŒáá·áºá á¯á¶áá±á¬ááá¯ááºáá®ááŸá¯ááᯠááŸá¬ááœá±ááẠááá¯á·ááá¯áẠáá¬áá¬á áá¬ážáá»á¬ážááᯠáááááá¬áá»á¬ážá¡ááŒá Ạá áááºá ááºážá á¬ážááá¯ááºáááºá PHP áá²á·ááá¯á·áá±á¬ áá¬áá¬á áá¬ážáá áºáá¯á áá»áá¯á·ááœááºážáá»ááºáá»á¬ážááẠá¡ááŸááºáááẠá¡á±á¬ááºááŒááºáááŒááºážá á¡ááŒá±á¬ááºážáááºážááŒá áºááá¯ááºáááºá Go áá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážáá¬áá¬á áá¬ážáá áºáá¯ááŸáá·áº áá±á«ááºážá ááºáá«áá áááºááẠáá¬áá¬á áá¬ážáá áºáá¯áá¯ááᯠá¡áá¯á¶ážááŒá¯ááẠááá·áºáááºáá¬ážáá»áŸááºááẠááá¯ááá¯á¡á¬ážáá±á¬ááºážááá·áº áá¯ááºáá¯ááºáá»á¬ážááᯠáááºáá®ážááá¯ááºáááºááŒá áºáááºá
Go ááŸáá·áº PHP á¡á á¯á¶á¡áááºááŒáá·áº á¡áá¯ááºáá¯ááºáá²á·ááŒá®ážá áá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯á·ááᯠáá»á áºáááºáᯠááŒá±á¬ááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá áºáá¯á¶ážááᯠá¡ááŒá¬ážáá áºáá¯á¡ááœáẠá áœáá·áºááœáŸááºááẠá¡á á®á¡á ááºáááŸááá« - ááá·áºáá»ááºáááºá¡áá±ááŸáá·áºá ဠdual stack á០ááá¯ááááºáááºááá¯ážáááŸáááẠáááºážáááºážáá»á¬ážááᯠááŸá¬ááœá±áá«áááºá
UPD- RoadRunner áááºáá®ážáá°ááŸáá·áº áá°áááºážáá±á¬ááºážáá«ážá áá°ážááœá²áá±ážáá¬ážáá°á¡á¬áž áááºá¹ááá¬áá«-
source: www.habr.com