ืืื ืืืจ! ืื ืื ื ืคืขืืืื ื-Badoo
ืืฉื ืื ืืืืจืื ืืช PHP ืืชืงืืื ืืืื: ืืกืคื ืืืฉืคื ืืฉืชืคืจ, ืจืืช ืืืฆืืืืช ืขืืชื - ืืืื ื ืืชื ืืืชืื ืืืื ืื ืืกืงืจืืคืืื ืืจืืืื ื-PHP ืืื ืืขืืืช. ืื ืืคืฉืจ ืืกืคืืจื ืกืงืืื ืืืืช ืจืืืง ืืืชืจ: RoadRunner, ืื ืืืื ื-PHP-FPM, ืื ืื ืงื ืืืืจืื ืืื ืืงืฉืืช, ืื ืฉื ืืชื ืจืืื ื ืืกืฃ ืืืืฆืืขืื (ืืืจืืช ืฉืืืฉื ืื ืืกืืืช ืืช ืชืืืื ืืคืืชืื). ืืจืืข ืื ื ืืชื ืกืื ืืืื ืื, ืื ืืื ืื ื ืขืืืื ืชืืฆืืืช ืืืืืง. ืืื ืืืคืื ืืช ืืืืชื ื ืืื ืืืื ื ืืืชืจ, ืื ื ืืคืจืกืืื ืืช ืืชืจืืื ืฉื ืืืืขืช RoadRunner ื-Spiral Scout.
ืืืืฉื ืืืืืืจ ืงืจืืื ืืืื ื: ืืฉืคืืชืจืื ืืช ืืืขืืืช ืฉืื ื, ืื ืื ื ืื ืืฉืชืืฉืื ืืจืื ืืืื PHP ื-Go, ืืื ืืงืื ืืช ืืืชืจืื ืืช ืฉื ืฉืชื ืืฉืคืืช ืืื ืื ืืืฉ ืืช ืืืืช ืืืืืช ืืฉื ืืื.
ืืขืฉืจ ืืฉื ืื ืืืืจืื ืืช ืืฆืจื ื ืืคืืืงืฆืืืช ืืืืจืืช ืืืจืฉืืื
ืืืขื ืืื ืืืืื ื ืฉ-Go ืืคืฉืจื ืื ื ืืื ืืช ืืคืืืงืฆืืืช ืืืืืืช ืืืชืจ ืขื ืฉืืคืืจื ืืืฆืืขืื ืขื ืคื 40. ืืขืืจืชื, ืืฆืืื ื ืืืจืืื ืืช ืืืืฆืจืื ืืงืืืืื ืฉืื ื ืฉื ืืชืื ื-PHP, ืืืฉืคืจ ืืืชื ืขื ืืื ืฉืืืื ืืืชืจืื ืืช ืฉื ืฉืชื ืืฉืคืืช.
ื ืกืคืจ ืืื ืืืฆื ืืฉืืืื ืฉื Go ื-PHP ืขืืืจ ืืคืชืืจ ืืขืืืช ืคืืชืื ืืืืชืืืช ืืืืฆื ืืื ืืคื ืขืืืจื ื ืืืื ืฉืืืื ืืืืคืืจ ืืืืง ืืืืขืืืช ืืงืฉืืจืืช
ืกืืืืช ืืคืืชืื ืืืืืืช ืฉืื ื-PHP
ืืคื ื ืฉื ืืืจ ืขื ืืื ืืชื ืืืื ืืืฉืชืืฉ ื-Go ืืื ืืืืืืช ืืช ืืืื ื-PHP ืืืืกืกืช, ืืืื ื ืกืชืื ืขื ืกืืืืช ืืคืืชืื ืืืืืืจืช ืืืจืืจืช ืืืื ืฉื PHP.
ืืจืื ืืืงืจืื, ืืชื ืืคืขืื ืืช ืืืืฉืื ืฉืื ืืืืฆืขืืช ืฉืืืื ืฉื ืฉืจืช ืืืื ืืจื ื nginx ืืฉืจืช PHP-FPM. ืืจืืฉืื ืืฉืจืช ืงืืฆืื ืกืืืืื ืืืคื ื ืืงืฉืืช ืกืคืฆืืคืืืช ื-PHP-FPM, ืืขืื ืฉ-PHP-FPM ืขืฆืื ืืืฆืข ืงืื PHP. ืืืชืื ืฉืืชื ืืฉืชืืฉ ืืฉืืืื ืืคืืืช ืคืืคืืืจื ืฉื Apache ื-mod_php. ืืื ืืืจืืช ืฉืื ืขืืื ืงืฆืช ืืืจืช, ืืขืงืจืื ืืช ืืืื.
ืืืื ื ืกืชืื ืืืฆื PHP-FPM ืืืฆืขืช ืงืื ืืืฉืื. ืืฉืืืืขื ืืงืฉื, PHP-FPM ืืืชืื ืชืืืื ืฆืืฆื ืฉื PHP ืืืขืืืจ ืืช ืคืจืื ืืืงืฉื ืืืืง ืืืืฆื ืฉืื (_GET, _POST, _SERVER ืืื').
ืืืฆื ืื ืืืื ืืืฉืชื ืืช ืืืืื ืืืฆืืข ืกืงืจืืคื PHP, ืื ืืฉ ืจืง ืืจื ืืืช ืืงืื ืกื ืืืฉ ืฉื ื ืชืื ื ืงืื: ืขื ืืื ื ืืงืื ืืืืจืื ืืชืืืื ืืืชืืื ืืืืฉ ืฉืื.
ืืืืื ืืืฆืืข ืื ืืชืจืื ืืช ืจืืื. ืื ืฆืจืื ืืืืื ืืืชืจ ืืื ืืืื ืฆืจืืืช ืืืืจืื, ืื ืืชืืืืืื ืืืืืืื ืืืืืืื, ืืื ืืื ืืื "ืืืืช", ืืื ืืืืืฆืจ ืืืืฉ ืืืืืืืืช ืืื ืื ืืฉืคืืข ืขื ืฉืืจ ืืชืืืืืื. ืื ืืืืฉื ืื ืืฉ ืื ืืกืจืื ืืช ืืืืคืืขืื ืืืฉืจ ืื ืกืื ืืืจืืื ืืช ืืืืฉืื.
ืืกืจืื ืืช ืืืืกืจ ืืขืืืืช ืฉื ืกืืืืช PHP ืจืืืื
ืื ืืชื ืืคืชื PHP ืืงืฆืืขื, ืื ืืชื ืืืืข ืืืคื ืืืชืืื ืคืจืืืงื ืืืฉ - ืขื ืืืืจืช ืืกืืจืช. ืืื ืืืจืื ืืกืคืจืืืช ืืืจืงืช ืชืืืช, ORMs, ืชืจืืืืื ืืชืื ืืืช. ืืืืืื, ื ืืชื ืืืื ืืก ืื ืืืืช ืืช ืื ืงืื ืืืฉืชืืฉ ืืืืืืืงื ืืื (Symfony/HttpFoundation ืื PSR-7). ืืกืืจืืช ืื ืืื ืื!
ืืื ืืื ืืืจ ืืฉ ืืช ืืืืืจ ืฉืื. ืืื ืืกืืจืช ืืจืืช ืืืจืืื, ืืื ืืขืื ืืงืฉืช ืืฉืชืืฉ ืคืฉืืื ืื ืืืฉื ืืืกื ื ืชืื ืื, ืชืฆืืจื ืืืขืื ืืคืืืช ืขืฉืจืืช ืงืืฆืื, ืืืฆืืจ ืืืืงืืช ืจืืืช ืืื ืชื ืืกืคืจ ืชืฆืืจืืช. ืืื ืืืืจ ืืืจืืข ืืืืชืจ ืืื ืฉืืืจื ืืฉืืืช ืื ืืฉืืื, ืชืฆืืจืื ืืืคืก ืืื ืืืืชืืื ืืืืฉ: ืื ืืงืื ืฉืืืืชื ืื ืขืชื ืืืคื ืืกืจ ืชืืขืืช, ืืขืืจืชื ืื ืชืขืืื ืขืื ืืงืฉื ื ืืกืคืช. ืชืืื ืืช ืื ืืื ืืชืื ืช ืฉืืืชื ืืฉืคื ืืืจืช, ืืชืจืื ืชืืืื ืขื ืคื ืื.
ืืื ืืกื PHP ืืืคืฉื ืืจืืื ืืคืชืืจ ืืขืื ืื ืืืฉื ืฉื ืื, ืชืื ืฉืืืืฉ ืืืื ืืงืืช ืืืืืช ืฉื ืืขืื ื ืขืฆืื, ืืืงืจื-ืคืจืืื, ืกืคืจืืืช ืืืชืืืืช, ืืืืื ืืื'. ืืื ืืกืืคื ืฉื ืืืจ, ืขืืืื ืฆืจืื ืืืคืก ืืช ืื ืืืคืืืงืฆืื ืืืืชืืื ืืืืฉ, ืฉืื ืืฉืื . (ืืขืจืช ืืืชืจืื: ืืขืื ืื ืชืืคืชืจ ืืืงืืช ืขื ืืืคืขืชื ืฉื
ืืื PHP ืขื Go ืืืื ืืฉืจืื ืืืชืจ ืืืงืฉื ืืืช?
ืืคืฉืจ ืืืชืื ืกืงืจืืคืืื ืฉื PHP ืฉืืืืฉืื ืืืชืจ ืืืื ืืงืืช (ืขื ืฉืขืืช ืื ืืืื): ืืืฉื ืืฉืืืืช cron, ืื ืชืื CSV, queue busters. ืืืื ืขืืืืื ืืคื ืืืชื ืชืจืืืฉ: ืื ืืฉืืืจืื ืืฉืืื, ืืืฆืขืื ืืืชื ืืืืืื ืืืฉืืื ืืืื. ืืงืื ืฉืืื ืืืืืจืื, ืืืกื ืืืคืืืช ืฉื ืืืช ืืงืจืืช ืืืืืื ืฉื ืืจืฉืื ืฉืืืื ื ืืกืคืื ืจืืื ืืืขืื ืช ืืืกืืจืช ืืืืืฉืื.
ืืื ืคืืชืื ืกืงืจืืคืืื ืืจืืืื ืื ืื ืงื. ืื ืฉืืืื ืืืจืืช ืืืืืืื ืืช ืืชืืืื, ืืืืื ืืืืคืืช ืืืืจืื ืืืขืืก, ืืืืชืืจ ืืืืื F5 ืืื ื ืืคืฉืจื ืขืื.
ืืืฆื ืืฉืชืคืจ ืขื ืฉืืจืืจื ืฉื PHP 7: ืืืคืืข ืืืกืฃ ืืฉืคื ืืืื, ืืคื ืงื ืืืชืจ ืืืคื ืืฉืืืืืช, ืืืจืืืืช ืืืื ืืืื ืืช ืืขืช ืืคื ื ืืืืคืืช. ื ืืื, ืืื ืืกืื ืขืืืื ืฆืจืืืื ืืืืืช ืืืืจืื ืืืืืจืื ืืืืืืช ืืืืขืื ืืืขืืืช ืืฆื ืืงืื (ืืื ืืฉ ืฉืคื ืฉืื ืื ืื ื ืื ืฆืจืืืื ืืืืื ืืืืจืื ืืืื?). ืืขืืืื, ื-PHP 7 ืืืืืช ืื ื ืคืืืช ืืคืชืขืืช.
ืืื ืืคืฉืจ ืืงืืช ืืช ืืืืื ืฉื ืขืืืื ืขื ืกืงืจืืคืืื ืฉื PHP ืืจืืื ืืืื, ืืืชืืื ืืืชื ืืืฉืืืืช ืืจืืืืืืืืืช ืืืชืจ ืืื ืขืืืื ืืงืฉืืช HTTP, ืืืื ืืืืคืืจ ืืืฆืืจื ืืืขืื ืืื ืืืคืก ืขื ืื ืืงืฉื?
ืืื ืืคืชืืจ ืืขืื ืื, ืืืื ื ืฆืจืืืื ืชืืืื ืืืืฉื ืืืฉืื ืฉืจืช ืฉืืืื ืืงืื ืืงืฉืืช HTTP ืืืืคื ืืช ืืืชื ืืืช ืืืช ืืขืืื ื-PHP ืืืื ืืืจืื ืืืชื ืืื ืคืขื.
ืืืขื ื ืฉืื ืื ื ืืืืืื ืืืชืื ืฉืจืช ืืื ืืจื ื ื-PHP ืืืืจ (PHP-PM) ืื ืืืืฆืขืืช ืกืืืืช C (Swoole). ืืืืจืืช ืฉืืื ืฉืืื ืืฉ ืืชืจืื ืืช ืืฉืื, ืฉืชื ืืืคืฉืจืืืืช ืื ืืชืืืื ืื ื โ ืจืฆืื ื ืขืื ืืฉืื. ืืืื ื ืฆืจืืืื ืืืชืจ ืืกืชื ืฉืจืช ืืื ืืจื ื - ืฆืืคืื ื ืืงืื ืคืชืจืื ืฉืืืื ืืืฆืื ืืืชื ื ืืืืขืืืช ืืงืฉืืจืืช ื"ืืชืืื ืงืฉื" ื-PHP, ืฉืืืงืืื ื ืืชื ืืืชืืื ืืืืจืืื ืืงืืืช ืืืคืืืงืฆืืืช ืกืคืฆืืคืืืช. ืืืืืจ, ืืืื ื ืฆืจืืืื ืฉืจืช ืืืฉืืืื.
ืืื ืื ืืืื ืืขืืืจ ืืื? ืืืขื ื ืฉืื ืืืื ืืืืืื ืฉืืฉืคื ืืจืืืื ืืืฉืืืื ืืงืืฆืื ืืื ืืจืืื ืืืืืื; ืื ืืืฆื ืคืืืคืืจืืืช; ืืฉืชืืฉ ืืืืื ืขืืืื ืืงืืืื ืืฉืื, ืืืื ืื ืืืื (ืืืงืืื) ืืืกืคืจืืื ืืขืืืื ืขื HTTP; ืืืืกืืฃ, ืืืคื ืกืคืจืืืช ืืืื ืืืจืฆืืืช ืืงืื ืคืชืื ืืืื ืืืื ืืช ืื ื.
ืืงืฉืืื ืืฉืืืื ืฉืชื ืฉืคืืช ืชืื ืืช
ืงืืื ืื, ืืื ืฆืืจื ืืงืืืข ืืืฆื ืฉืชื ืืืฉืืืื ืื ืืืชืจ ืืชืงืฉืจื ืื ืขื ืื.
ืืืืืื, ืืืืฆืขืืช
ืืืืื ื ืืืฉืชืืฉ ืืืืฉื ืืืจืช, ื ืคืืฆื ืืืชืจ: ืืื ืืช ืืื ืืจืืงืฆืื ืืื ืชืืืืืื ืืืืฆืขืืช ืฉืงืขืื/ืฆืื ืืจืืช. ืืืฉื ืื ืืืืื ืืืืื ื ืืขืฉืืจืื ืืืืจืื ืื ืืขืืจื ืืืคืืืืืืฆืื ืืืื ืืจืืช ืืขืจืืช ืืืคืขืื.
ืืืืชืืืื, ืืฆืจื ื ืคืจืืืืงืื ืืื ืืจื ืคืฉืื ืืืืืคืช ื ืชืื ืื ืืื ืชืืืืืื ืืืืคืื ืืฉืืืืืช ืฉืืืืจ. ืืฆืืจืชื ืืคืฉืืื ืืืืชืจ, ืกืื ืื ืฉื ืคืจืืืืงืื ืืืื ื
ืืฆื PHP ืืฉืชืืฉื ื
ื ืจืื ืืื ืื ื ืฉืื ืืกืคืืง ืคืจืืืืงืื ืืื - ืืืืกืคื ื ืืคืฉืจืืช ืืืชืงืฉืจ
ืืคืฆืช ืืฉืืืืช ืขื ืคื ื ืืกืคืจ ืขืืืื PHP
ืืืืจ ืืืืขืช ืื ืื ืื ืืืื ืืจืืงืฆืื, ืืชืืื ื ืืืฉืื ืขื ืืืจื ืืืขืืื ืืืืชืจ ืืืขืืืจ ืืฉืืืืช ืืชืืืืื PHP. ืืืฉืจ ืืฉืืื ืืืืขื, ืฉืจืช ืืืืฉืืืื ืืืื ืืืืืจ ืขืืื ืคื ืื ืฉืืืฆืข ืืืชื. ืื ืขืืื/ืชืืืื ืืืฆื ืขื ืฉืืืื ืื "ืืช", ืื ื ื ืคืืจืื ืืื ื ืืืืฆืจืื ืืื ืืืฉ ืฉืืืืืฃ ืืืชื. ืืื ืืขืืื/ืชืืืื ืืกืชืืื ืืืฆืืื, ืื ื ืืืืืจืื ืืืชื ืืืืืจ ืืขืืืืื ืืืืื ืื ืืืืฆืืข ืืฉืืืืช.
ืืื ืืืืกื ืืช ืืืืจ ืืขืืืืื ืืคืขืืืื, ืืฉืชืืฉื ื
ืืชืืฆืื ืืื, ืงืืืื ื ืฉืจืช PHP ืขืืื ืืืกืืื ืืขืื ืื ืืงืฉืืช ืืืืฆืืืช ืืฆืืจื ืืื ืืจืืช.
ืืื ืฉืืืคืืืงืฆืื ืฉืื ื ืชืชืืื ืืขืืื ืืฉืจืช ืืื ืืจื ื, ืืืื ื ืฆืจืืืื ืืืืืจ ืชืงื PHP ืืืื ืฉืืืืฆื ืื ืืงืฉืืช HTTP ื ืื ืกืืช. ืืืงืจื ืฉืื ื, ืื ืื ื ืคืฉืื
ืืืืืื ืฉ-PSR-7 ื ืืฉื ืืืืชื ื ืืชื ืืฉืื ืื (ืืฉ ืฉืืืืื ืฉืืื ืืช ืืื ืื), ืืคืชืืื ืฆืจืืืื ืืืชืื ืืคืืืงืฆืืืช ืฉืื ืืชืืืืกืืช ืืืงืฉื ืืื ืืฉืืช ืืืืืืืช ืืืืคื ืขืงืจืื ื. ืื ืืชืืื ืืืื ืืงืื ืกืคื ืฉื ืชืืืืื PHP ืืจืืืื. ืืืืฉืื ืืกืืคื ืฉืื ื, ืฉืขืืืื ืื ืงืืื ืฉื, ื ืจืื ืื:
ืืืืจืืช ืขื RoadRunner - ืฉืจืช ืืืฉืืื PHP ืืขื ืืืฆืืขืื ืืืืืื
ืืฉืืืช ืืืืืงื ืืจืืฉืื ื ืฉืื ื ืืืืชื ืงืฆื ืืืืจื ืฉื API, ืฉืคืืฆืฅ ืืขืช ืืขืช ืืงืฉืืช ืืืชื ืฆืคืืืืช (ืืจืื ืืืชืจ ืืืจืืื). ืืืจืืช ืฉ-nginx ืืกืคืืง ืืจืื ืืืงืจืื, ื ืชืงืื ื ืืืืคื ืงืืืข ื-502 ืฉืืืืืช ืืืืืื ืฉืื ืืฆืืื ื ืืืื ืืช ืืืขืจืืช ืืืืืจืืช ืืกืคืงืช ืืขืืืื ืืฆืคืืื ืืขืืืก.
ืืื ืืืืืืฃ ืคืชืจืื ืื, ืคืจืกื ื ืืช ืฉืจืช ืืืฉืืื PHP/Go ืืจืืฉืื ืฉืื ื ืืชืืืืช 2018. ืืืื ืงืืื ืืคืงื ืืืืื! ืื ืจืง ืฉื ืคืืจื ื ืืืืืืื ืืฉืืืืช 502, ืืื ืฉืืฆืืื ื ืืฆืืฆื ืืช ืืกืคืจ ืืฉืจืชืื ืืฉื ื ืฉืืืฉ, ืืืกืื ื ืืจืื ืืกืฃ ืืืืืจื ืืื ืจืืฉ ืืืื ืืกืื ืืื ืืื ืืืฆืจ.
ืขื ืืืฆืข ืืฉื ื, ืฉืืคืจื ื ืืช ืืคืชืจืื ืฉืื ื, ืคืจืกืื ื ืืืชื ื-GitHub ืชืืช ืจืืฉืืื MIT ืืงืจืื ื ืื
ืืืฆื RoadRunner ืืืื ืืฉืคืจ ืืช ืขืจืืืช ืืคืืชืื ืฉืื
ืืงืฉื
ืืืืืช ื-RPC ืืืืื ื, ืืชื ืืืื ืืคืชืื ืืช ื-API ืฉื ืื ืกืคืจืืืช Go ืขืืืจ PHP ืืืื ืืืชืื ืขืืืคืืช ืฉื ืืจืืืืช. ืืฉืื ืืื, ืขื RoadRunner ืืชื ืืืื ืืคืจืืก ืฉืจืชืื ืืืฉืื ืฉืืื ื HTTP. ืืืืืืืช ืืืืืืช ืืคืขืืช ืืืคืืื ื-PHP
ืืขืืจืช ืงืืืืืช PHP ื-Go, ืฉืืคืจื ื ืืช ืืฆืืืืช ืืคืชืจืื, ืืืืื ื ืืช ืืืฆืืขื ืืืคืืืงืฆืื ืขื ืคื 40 ืืืืง ืืืืืืงืืช, ืฉืืคืจื ื ืืื ืืืชืืจ ืืืืื, ืืืืขื ื ืืื ืืืจืฆืื ืขื ืืกืืจืช Symfony ืืืืกืคื ื ืชืืืื ื-HTTPS, HTTP/2, ืชืืกืคืื, ื-PSR-17.
ืืกืงื ื
ืืฉ ืื ืฉืื ืฉืขืืืื ืืืืืื ืืจืขืืื ืืืืืฉื ืฉื PHP ืืฉืคื ืืืืืช ืืืกืืจืืืช ืฉืืชืืืื ืจืง ืืืชืืืช ืชืืกืคืื ืืืืจืืคืจืก. ืื ืฉืื ืืื ืขืฉืืืื ืืคืืื ืืืืจ ืฉื-PHP ืืฉ ืืืืื ืืื: ืืืฉืจ ืืืคืืืงืฆืื ื ืืืืช ืืืืื ืืกืคืืง, ืืชื ืฆืจืื ืืืืืจ ืฉืคื "ืืืืจืช" ืืืชืจ ืืืฉืืชื ืืช ืืกืืก ืืงืื ืฉื ืฆืืจ ืืืฉื ืฉื ืื ืจืืืช.
ืขื ืื ืื ืื ื ืจืืฆื ืืขื ืืช: ืชืืฉืื ืฉืื. ืื ื ืืืืื ืื ืฉืจืง ืืชื ืืืืืจ ืืืืืืช ื-PHP. ืืชื ืืืื ืืืขืืืจ ืืช ืื ืืืื ืืืขืืจ ืืฉืคื ืืืช ืืืืจืช, ืื ืืกืืื ืืืฆืื ืืช ืืืชืืื ืืืืฉืืืช ืืฆืจืืื ืฉืื, ืื ืฉืืชื ืืืื ืืืชืืื ืืืฉืื ืขื ืฉืคืืช ืืืืื. ืืคืืืื ืืืืืื ืฉื ืฉืคื ืืื PHP ืขืฉืืืื ืืืืืช ืืืขืฉื ืืกืืื ืืืฆืืืชื. ืืื ืชืฉืื ืืช ืื ืขื ืฉืคื ืืืจืช ืืื Go, ืื ืชืืฆืืจ ืืืฆืจืื ืืจืื ืืืชืจ ืืืงืื ืืืฉืจ ืื ืืืืช ืืืืื ืืฉืืืืฉ ืืื ืฉืคื ืืืช.
ืืืืจ ืฉืขืืื ื ืขื ืืืืจื ืฉื Go ื-PHP, ืื ืื ื ืืืืืื ืืืืจ ืฉืื ืื ื ืืืืืื ืืืชื. ืื ืื ื ืื ืืชืื ื ืื ืืืงืจืื ืืื ืืืขื ืืฉื ื - ืืืืคื, ื ืืคืฉ ืืจืืื ืืงืื ืขืื ืืืชืจ ืขืจื ืืืืืกื ืืช ืืืคืืื ืืื.
UPD: ืื ื ืืืจืืื ืืช ืืืืฆืจ ืฉื RoadRunner ืืืช ืืืืืจ ืืืฉืืชืฃ ืฉื ืืืืืจ ืืืงืืจื -
ืืงืืจ: www.habr.com