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

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

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

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

НапримСр, Ρ‡Ρ€Π΅Π· прСкрасната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° АлСкс ΠŸΠ°Π»Π°Π΅ΡΡ‚Ρ€Π°Ρ, моТСшС Π΄Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° сподСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ процСситС 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