RoadRunner: PHP Π½Π΅ Π΅ създадСн, Π·Π° Π΄Π° ΡƒΠΌΠΈΡ€Π°, ΠΈΠ»ΠΈ Golang Π±ΡŠΡ€Π·Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰

RoadRunner: PHP Π½Π΅ Π΅ създадСн, Π·Π° Π΄Π° ΡƒΠΌΠΈΡ€Π°, ΠΈΠ»ΠΈ Golang Π±ΡŠΡ€Π·Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅, Π₯Π°Π±Ρ€! Активно Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ Π² Badoo Π²ΡŠΡ€Ρ…Ρƒ производитСлността Π½Π° PHP, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ голяма систСма Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π·Π° производитСлността Π΅ Π²ΡŠΠΏΡ€ΠΎΡ Π½Π° икономия. ΠŸΡ€Π΅Π΄ΠΈ дСсСт Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ PHP-FPM, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ бСшС Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠ°Ρ‡ΠΎΠ²Π΅ Π·Π° PHP, Π° ΠΏΠΎ-късно Π²Π»Π΅Π·Π΅ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° дистрибуция.

ΠŸΡ€Π΅Π· послСднитС Π³ΠΎΠ΄ΠΈΠ½ΠΈ PHP Π½Π°ΠΏΡ€Π΅Π΄Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ: ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ сС ΡΠ±ΠΎΡ€Π½ΠΈΠΊΡŠΡ‚ Π·Π° Π±ΠΎΠΊΠ»ΡƒΠΊ, стабилността нарастна β€” днСс Π½Π° PHP ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° сС ΠΏΠΈΡˆΠ°Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΠΈ ΠΈ Π΄ΡŠΠ»Π³ΠΎΠΆΠΈΠ²Π΅Π΅Ρ‰ΠΈ скриптовС. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° Spiral Scout Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡: RoadRunner, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ PHP-FPM, Π½Π΅ освобоТдава ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ заявкитС, ΠΊΠΎΠ΅Ρ‚ΠΎ прСдоставя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° производитСлност (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ услоТнява Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°). Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° СкспСримСнтирамС с Ρ‚ΠΎΠ·ΠΈ инструмСнт, Π½ΠΎ всС ΠΎΡ‰Π΅ нямамС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° сподСлим. Π—Π° Π΄Π° бъдС ΠΎΡ‡Π°ΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎ-приятно, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° анонса Π½Π° RoadRunner ΠΎΡ‚ Spiral Scout.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ ΠΎΡ‚ статията Π½ΠΈ Π΅ близък: ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° собствСнитС си Π·Π°Π΄Π°Ρ‡ΠΈ ΡΡŠΡ‰ΠΎ Π½Π°ΠΉ-чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ комбинация ΠΎΡ‚ PHP ΠΈ Go, ΠΈΠ·Π²Π»ΠΈΡ‡Π°ΠΉΠΊΠΈ прСдимствата Π½Π° Π΄Π²Π°Ρ‚Π° Π΅Π·ΠΈΠΊΠ° ΠΈ Π½Π΅ сС ΠΎΡ‚ΠΊΠ°Π·Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ Сдиния Π² ΠΏΠΎΠ»Π·Π° Π½Π° другия.

ΠŸΡ€ΠΈΡΡ‚Π½ΠΎ!

ΠŸΡ€Π΅Π· послСднитС дСсСт Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Ρ…ΠΌΠ΅ прилоТСния ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΎΡ‚ списъка Fortune 500, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° бизнСси с аудитория Π΄ΠΎ 500 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. ΠŸΡ€Π΅Π· цялото Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ…Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° основно Π½Π° PHP. Но Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π½Π°Π·Π°Π΄ Π½Π΅Ρ‰ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ повлия Π½Π° Π½Π΅ само производитСлността Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ, Π½ΠΎ ΠΈ Π½Π° тяхната мащабируСмост β€” Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ…ΠΌΠ΅ Golang (Go) Π² нашия Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅Π½ стСк.

ΠŸΠΎΡ‡Ρ‚ΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ Go Π½ΠΈ позволява Π΄Π° създавамС ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ прилоТСния с ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° производитСлността Π΄ΠΎ 40 ΠΏΡŠΡ‚ΠΈ. Π‘ Π½Π΅Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ‰ успяхмС Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΠΌ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ, написани Π½Π° PHP, подобрявайки Π³ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° комбинацията ΠΎΡ‚ прСдимствата Π½Π° Π΄Π²Π°Ρ‚Π° Π΅Π·ΠΈΠΊΠ°.

Π©Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ комбинацията Go ΠΈ PHP ΠΏΠΎΠΌΠ°Π³Π° Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π΅Π°Π»Π½ΠΈ разработчичСски Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΊΠ°ΠΊ сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π° Π² инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° отстрани част ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΌΠΎΠ΄Π΅Π»Π° 'ΡƒΠΌΠΈΡ€Π°Π½Π΅' Π½Π° 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, Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡŠΠ΄Π΅ трябва Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ - ΠΎΡ‚ ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° Ρ€Π°ΠΌΠΊΠ°. Вя прСдставлява Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° внСдряванС Π½Π° зависимости, ORM, ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΈ ΠΈ шаблони. И, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, всички Π²Ρ…ΠΎΠ΄Π½ΠΈ потрСбитСлски Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ³Π°Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ поставСни Π² Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ‚ (Symfony/HttpFoundation ΠΈΠ»ΠΈ PSR-7). Π Π°ΠΌΠΊΠΈΡ‚Π΅ са страхотни!

Но всичко ΠΈΠΌΠ° своята Ρ†Π΅Π½Π°. Π’ която ΠΈ Π΄Π° Π΅ Ρ€Π°ΠΌΠΊΠ° Π½Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Π½ΠΈΠ²ΠΎ, Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° проста потрСбитСлска заявка ΠΈΠ»ΠΈ заявка към Π‘Π”, Ρ‰Π΅ трябва Π΄Π° Π·Π°Ρ€Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ½Π΅ дСсСтки Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ±Ρ€ΠΎΠΉΠ½ΠΈ класовС ΠΈ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ няколко ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Но Π½Π°ΠΉ-Π»ΠΎΡˆΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ слСд ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° всяка Π·Π°Π΄Π°Ρ‡Π°, всичко трябва Π΄Π° бъдС Π½ΡƒΠ»ΠΈΡ€Π°Π½ΠΎ ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ ΠΎΡ‚Π½Π°Ρ‡Π°Π»ΠΎ: цСлият ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ стС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π»ΠΈ, става Π±Π΅Π·ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈ с Π½Π΅Π³ΠΎ Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³Π° заявка. ΠšΠ°ΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π° Π½Π° всСки програмист, ΠΊΠΎΠΉΡ‚ΠΎ пишС Π½Π° Π΄Ρ€ΡƒΠ³ Π΅Π·ΠΈΠΊ, ΠΈ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅ Π½Π° Π»ΠΈΡ†Π΅Ρ‚ΠΎ ΠΌΡƒ.

PHP ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ с Π³ΠΎΠ΄ΠΈΠ½ΠΈ Ρ‚ΡŠΡ€ΡΡΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ обмислСни ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° "Π»Π΅Π½ΠΈΠ²ΠΎ" Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅, ΠΌΠΈΠΊΡ€ΠΎΡ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Π΅, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, кСш ΠΈ Ρ‚.Π½. Но Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΏΠ°ΠΊ сС Π½Π°Π»Π°Π³Π° Π΄Π° сС сброи цялото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π° сС Π·Π°ΠΏΠΎΡ‡Π½Π΅ ΠΎΡ‚Π½Π°Ρ‡Π°Π»ΠΎ, ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ. (Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° Π½Π° ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°: частично Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ‰Π΅ бъдС Ρ€Π΅ΡˆΠ΅Π½ с появата Π½Π° preload PHP 7.4)

МоТС Π»ΠΈ PHP с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Go Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ заявка?

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС Π½Π°ΠΏΠΈΡˆΠ°Ρ‚ PHP скриптовС, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° ΠΏΡ€ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ няколко ΠΌΠΈΠ½ΡƒΡ‚ΠΈ (Π΄ΠΎΡ€ΠΈ Π΄ΠΎ часовС ΠΈΠ»ΠΈ Π΄Π½ΠΈ): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, cron Π·Π°Π΄Π°Ρ‡ΠΈ, CSV парсСри, Ρ€Π°Π·Π±ΠΎΡ€Ρ‡ΠΈΡ†ΠΈ Π½Π° опашки. Всички Ρ‚Π΅ работят ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ сцСнарий: ΠΈΠ·Π²Π»ΠΈΡ‡Π°Ρ‚ Π·Π°Π΄Π°Ρ‡Π°, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ я, ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Ρ‚ слСдващата. ΠšΠΎΠ΄ΡŠΡ‚ постоянно Π΅ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, спСстявайки Ρ†Π΅Π½Π½ΠΈ милисСкунди, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ изисква мноТСство Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Но Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΡŠΠ»Π³ΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ скриптовС Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° лСсно. Всяка Π³Ρ€Π΅ΡˆΠΊΠ° напълно ΡƒΠ±ΠΈΠ²Π° процСса, диагностициранСто Π½Π° Ρ‚Π΅Ρ‡ΠΎΠ²Π΅ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π΅ Π±Π΅Π·ΡƒΠΌΠ½ΠΎ слоТно, Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ с F5 Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ възмоТно.

Битуацията сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ с ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅Ρ‚ΠΎ Π½Π° PHP 7: появи сС Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ сборник Π½Π° мусор, стана ΠΏΠΎ-лСсно Π΄Π° сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅, Π° основнитС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π²Π΅Ρ‡Π΅ са Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈ срСщу Ρ‚Π΅Ρ‡ΠΎΠ²Π΅. ВсС ΠΏΠ°ΠΊ, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ всС ΠΎΡ‰Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠ°Π·Π»ΠΈΠ²ΠΈ с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π΄Π° помнят Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ със ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π° (ΠΈΠΌΠ° Π»ΠΈ Π΅Π·ΠΈΠΊ, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° Π½Π΅ сС ΠΎΠ±Ρ€ΡŠΡ‰Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚Π΅Π·ΠΈ Π½Π΅Ρ‰Π°?). И всС ΠΏΠ°ΠΊ, Π² PHP 7 Π½ΠΈ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈ.

МоТС Π»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΡŠΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π΄ΡŠΠ»Π³ΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ PHP скриптовС Π΄Π° бъдС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ Π·Π° ΠΏΠΎ-простичкитС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° HTTP заявки ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ нСобходимостта ΠΎΡ‚ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° всичко ΠΎΡ‚Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΡ€ΠΈ всяка заявка?

Π—Π° Π΄Π° сС Ρ€Π΅ΡˆΠΈ Ρ‚Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π°, ΠΏΡŠΡ€Π²ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, способно Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° HTTP заявки ΠΈ Π΄Π° Π³ΠΈ прСнасочва Π΅Π΄Π½Π° ΠΏΠΎ Π΅Π΄Π½Π° към PHP Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°, Π±Π΅Π· Π΄Π° Π³ΠΎ ΡƒΠ±ΠΈΠ²Π° всСки ΠΏΡŠΡ‚.

Π—Π½Π°Π΅Ρ…ΠΌΠ΅, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° напишСм ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° чист PHP (PHP-PM) ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π‘-Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ (Swoole). И Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ всСки ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈΠΌΠ° своитС прСдимства, Π½ΠΈΡ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ тях Π½Π΅ Π½ΠΈ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΠ²Π°ΡˆΠ΅ β€” искахмС Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅. НуТдаСхмС сС Π½Π΅ просто ΠΎΡ‚ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ β€” искахмС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, способно Π΄Π° Π½ΠΈ ΠΈΠ·Π±Π°Π²ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с "тСТкия старт" Π² PHP, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС лСсно Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ΠΎ ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ спрямо ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ прилоТСния. ВоСст, Π½ΡƒΠΆΠ΄Π°Π΅Ρ…ΠΌΠ΅ сС ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΡΡŠΡ€Π²ΡŠΡ€.

МоТС Π»ΠΈ Go Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π² Ρ‚ΠΎΠ²Π°? Π—Π½Π°Π΅Ρ…ΠΌΠ΅, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° прилоТСния Π² самостоятСлни Π±ΠΈΠ½Π°Ρ€Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅; Ρ‚ΠΎΠΉ Π΅ кроссплатформСн; ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° собствСна, ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π»Π΅Π³Π°Π½Ρ‚Π½Π°, ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (concurrency) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с HTTP; ΠΈ накрая, Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ хиляди open-source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

ВрудноститС ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π²Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅

На ΠΏΡŠΡ€Π²ΠΎ място, Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ прилоТСния Ρ‰Π΅ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си.

НапримСр, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° прСкрасната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° АлСкс ΠŸΠ°Π»Π΅ΡΡ‚Ρ€aс, моТСшС Π΄Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° сподСлянСто Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ процСситС PHP ΠΈ Go (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° mod_php Π² Apache). Но Ρ‚Π°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌΠ° особСности, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°.

Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Ρ€ΡƒΠ³, ΠΏΠΎ-разпространСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Π΄Π° построим взаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ процСситС Ρ‡Ρ€Π΅Π· сокСти/ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ. Π’Π°Π·ΠΈ стратСгия ΠΏΡ€Π΅Π· послСднитС дСсСтилСтия ΠΏΠΎΠΊΠ°Π·Π° своята надСТдност ΠΈ Π΅ Π±ΠΈΠ»Π° Π΄ΠΎΠ±Ρ€Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма.

ΠŸΡŠΡ€Π²ΠΎ, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ прост Π±ΠΈΠ½Π°Ρ€Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ процСситС ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅. Π’ Π½Π°ΠΉ-простата си Ρ„ΠΎΡ€ΠΌΠ°, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŠΡ‚ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° netstring с с фиксиран Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° (Π² нашия случай 17 Π±Π°ΠΉΡ‚Π°), ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° информация Π·Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ°ΠΊΠ΅Ρ‚, нСговия Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Π° маска Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° цСлостта Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅.

ΠžΡ‚ страна Π½Π° PHP ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ функцията pack, Π° ΠΎΡ‚ страна Π½Π° Go – Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° encoding/binary.

На нас Π½ΠΈ сС стори Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π΅Π½ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» β€” ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ Go услуги net/rpc Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ PHP. По-късно Ρ‚ΠΎΠ²Π° Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ…ΠΌΠ΅ лСсно Π΄Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΠΌΠ΅ Go Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² PHP прилоТСния. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² другия Π½ΠΈ open-source ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Goridge.

РазпрСдСлянС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° няколко PHP Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°

Π‘Π»Π΅Π΄ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° взаимодСйствиС, Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° обмислямС ΠΊΠ°ΠΊ Π½Π°ΠΉ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° PHP процСситС. ΠšΠΎΠ³Π°Ρ‚ΠΎ пристигнС Π·Π°Π΄Π°Ρ‡Π°, прилоТният ΡΡŠΡ€Π²ΡŠΡ€ трябва Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ свободСн Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ Π·Π° Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ изпълнСниС. Ако Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΡŠΡ‚ / ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈΠ»ΠΈ Π΅ "умрял", Π³ΠΎ отстранявамС ΠΈ създавамС Π½ΠΎΠ² вмСсто Π½Π΅Π³ΠΎ. А Π°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΡŠΡ‚ / ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈΠ» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π³ΠΎ Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ Π² Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈΡ‚Π΅, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π·Π° изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ.

RoadRunner: PHP Π½Π΅ Π΅ създадСн, Π·Π° Π΄Π° ΡƒΠΌΠΈΡ€Π°, ΠΈΠ»ΠΈ Golang Π±ΡŠΡ€Π·Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰

Π—Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΠΎΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€Π°Π½ ΠΊΠ°Π½Π°Π», Π·Π° Π΄Π° отстранявамС Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎ "ΡƒΠΌΡ€Π΅Π»ΠΈΡ‚Π΅" Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° прослСдяванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈΡ‚Π΅.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ PHP ΡΡŠΡ€Π²ΡŠΡ€, способСн Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° всякакви заявки, прСдставСни Π² Π±ΠΈΠ½Π°Ρ€Π΅Π½ Π²ΠΈΠ΄.

Π—Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ PHP стандарт Π·Π° прСдставянС Π½Π° всички входящи HTTP заявки. Π’ нашия случай просто ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°ΠΌΠ΅ net/http заявка ΠΎΡ‚ Go Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ PSR-7, Π·Π° Π΄Π° бъдС ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡Π½ΠΈ днСс PHP Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Π΅.

Въй ΠΊΠ°Ρ‚ΠΎ PSR-7 сС счита Π·Π° нСизмСняСм (някои Ρ‰Π΅ ΠΊΠ°ΠΆΠ°Ρ‚, Ρ‡Π΅ тСхничСски Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ трябва Π΄Π° ΠΏΠΈΡˆΠ°Ρ‚ прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ½ΠΎ Π½Π΅ работят с заявката ΠΊΠ°Ρ‚ΠΎ с Π³Π»ΠΎΠ±Π°Π»Π½Π° сущност. Π’ΠΎΠ²Π° прСкрасно съвпада с концСпцията Π½Π° Π΄ΡŠΠ»Π³ΠΎΠΆΠΈΠ²Π΅Π΅Ρ‰ΠΈ PHP процСси. ΠΠ°ΡˆΠ°Ρ‚Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½Π° рСализация, която всС ΠΎΡ‰Π΅ няма ΠΈΠΌΠ΅, изглСТдашС Ρ‚Π°ΠΊΠ°:

RoadRunner: PHP Π½Π΅ Π΅ създадСн, Π·Π° Π΄Π° ΡƒΠΌΠΈΡ€Π°, ΠΈΠ»ΠΈ Golang Π±ΡŠΡ€Π·Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌΠ΅ RoadRunner β€” високопроизводитСлСн PHP ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° прилоТСния

ΠΠ°ΡˆΠ°Ρ‚Π° ΠΏΡŠΡ€Π²Π° тСстова Π·Π°Π΄Π°Ρ‡Π° бСшС API Π±Π΅ΠΊΠ΅Π½Π΄, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ нСпрСдсказуСмо Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ…Π° ΠΈΠ·Π±Π»ΠΈΡ†ΠΈ Π½Π° заявки (ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-чСсто ΠΎΡ‚ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎΡ‚ΠΎ). Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° nginx бяха Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ сС ΡΠ±Π»ΡŠΡΠΊΠ²Π°Ρ…ΠΌΠ΅ с Π³Ρ€Π΅ΡˆΠΊΠ° 502, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ…ΠΌΠ΅ Π΄Π° балансирамС систСмата Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π±ΡŠΡ€Π·ΠΎ ΠΏΠΎΠ΄ ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎΡ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ.

Π—Π° Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° 2018 Π³. Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ…ΠΌΠ΅ нашия ΠΏΡŠΡ€Π²ΠΈ PHP/Go ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° прилоТСния. И Π²Π΅Π΄Π½Π°Π³Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ нСвСроятСн Π΅Ρ„Π΅ΠΊΡ‚! НС само Ρ‡Π΅ напълно сС ΠΎΡ‚ΡŠΡ€Π²Π°Ρ…ΠΌΠ΅ ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° 502, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° успяхмС Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ броя Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ с Π΄Π²Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΈ, икономисвайки ΠΊΡƒΠΏΠΈΡ‰Π° ΠΏΠ°Ρ€ΠΈ ΠΈ Ρ…Π°ΠΏΡ‡Π΅Ρ‚Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π³Π»Π°Π²ΠΎΠ±ΠΎΠ»ΠΈΠ΅ Π·Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈΡ‚Π΅.

Π’ срСдата Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π°Ρ‚Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ…ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ…ΠΌΠ΅ Π³ΠΎ Π² GitHub ΠΏΠΎΠ΄ лицСнзия MIT ΠΈ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ…ΠΌΠ΅ RoadRunner, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π°ΠΉΠΊΠΈ нСвСроятната ΠΌΡƒ Π±ΡŠΡ€Π·ΠΈΠ½Π° ΠΈ СфСктивност.

Как RoadRunner ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ вашия разработчСски стСк

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ RoadRunner ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Middleware net/http ΠΎΡ‚ страната Π½Π° Go, Π·Π° Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ JWT-вСрификация ΠΎΡ‰Π΅ ΠΏΡ€Π΅Π΄ΠΈ заявката Π΄Π° стигнС Π΄ΠΎ PHP, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ WebSockets ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π΄Π° Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ Π² Prometheus.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ RPC ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ API Π½Π° всякакви Go-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° PHP, Π±Π΅Π· Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ написванС Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ-Π΅ΠΊΡΡ‚Π΅Π½ΡˆΡŠΠ½ΠΈ. ΠžΡ‰Π΅ ΠΏΠΎ-Π²Π°ΠΆΠ½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° RoadRunner ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ‚ HTTP. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Ρ‚ΠΎΠ²Π° са стартиранС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² PHP, AWS LambdaсъздаванС Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° опашки ΠΈ Π΄ΠΎΡ€ΠΈ добавянС gRPC Π² Π½Π°ΡˆΠΈΡ‚Π΅ прилоТСния.

Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° общноститС PHP ΠΈ Go ΠΏΠΎΠ²ΠΈΡˆΠΈΡ…ΠΌΠ΅ стабилността Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π² някои тСстовС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ…ΠΌΠ΅ производитСлността Π½Π° прилоТСнията Π΄ΠΎ 40 ΠΏΡŠΡ‚ΠΈ, ΡƒΡΡŠΠ²ΡŠΡ€ΡˆΠ΅Π½ΡΡ‚Π²Π°Ρ…ΠΌΠ΅ инструмСнтитС Π·Π° отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ интСграция с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Symfony ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° HTTPS, HTTP/2, плъгини ΠΈ PSR-17.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Някои всС ΠΎΡ‰Π΅ са Π² ΠΏΠ»Π΅Π½ Π½Π° остарялото схващанС Π·Π° PHP ΠΊΠ°Ρ‚ΠΎ Π±Π°Π²Π΅Π½ ΠΈ обСмист Π΅Π·ΠΈΠΊ, Π³ΠΎΠ΄Π΅Π½ само Π·Π° писанС Π½Π° плъгини Π·Π° WordPress. Π’Π΅Π·ΠΈ Ρ…ΠΎΡ€Π° Π΄ΠΎΡ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΊΠ°ΠΆΠ°Ρ‚, Ρ‡Π΅ PHP ΠΈΠΌΠ° Ρ‚Π°ΠΊΠΎΠ²Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ станС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ голямо, трябва Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΠΎ «зрял» Π΅Π·ΠΈΠΊ ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΏΠΈΡˆΠ΅Ρ‚Π΅ натрупания с Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΊΠΎΠ΄.

На всичко Ρ‚ΠΎΠ²Π° искамС Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ: помислСтС ΠΎΡ‚Π½ΠΎΠ²ΠΎ. БмятамС, Ρ‡Π΅ само Π²ΠΈΠ΅ самитС поставятС ограничСния Π·Π° PHP. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°Ρ‚Π΅ цСлия си ΠΆΠΈΠ²ΠΎΡ‚ Π² прСминавания ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Π΅Π·ΠΈΠΊ Π½Π° Π΄Ρ€ΡƒΠ³, ΠΎΠΏΠΈΡ‚Π²Π°ΠΉΠΊΠΈ сС Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π°Π»Π½Π°Ρ‚Π° комбинация Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚Π΅ Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚ΠΎ инструмСнти. Π—Π°Π²ΠΈΠ΄Π½ΠΈΡ‚Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° ΠΊΠ°Ρ‚ΠΎ PHP Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° нСговия успСх. А Π°ΠΊΠΎ Π³ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ с Π΄Ρ€ΡƒΠ³ Π΅Π·ΠΈΠΊ ΠΊΠ°Ρ‚ΠΎ Go, Ρ‰Π΅ ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π°ΠΊΠΎ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ само Π΄ΠΎ Π΅Π΄ΠΈΠ½ Π΅Π·ΠΈΠΊ.

Π Π°Π±ΠΎΡ‚Π΅ΠΉΠΊΠΈ с комбинацията Go ΠΈ PHP, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° заявим, Ρ‡Π΅ Π³ΠΈ ΠΎΠ±ΠΈΠΊΠ½Π°Ρ…ΠΌΠ΅. НС ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° ΠΆΠ΅Ρ€Ρ‚Π²Π°ΠΌΠ΅ Сдиния Π² ΠΏΠΎΠ»Π·Π° Π½Π° другия β€” Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², Ρ‰Π΅ Ρ‚ΡŠΡ€ΡΠΈΠΌ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΠΌ ΠΎΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠΎΠ»Π·ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ двойствСн стСк.

UPD: привСтствамС ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π»Ρ Π½Π° RoadRunner ΠΈ ΡΡŠΠ°Π²Ρ‚ΠΎΡ€Π° Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° статия β€” Lachezis

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster