en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels πŸ‘‰ If you want to see the tag, subscribe

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter

Open in Telegram

ВсС самоС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅. По Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @tproger_sales_bot Π£Ρ‡ΠΈΡ‚ΡŒΡΡ Ρƒ нас: clc.to/M561SQ Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b

Show more

πŸ“ˆ Analytical overview of Telegram channel Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter

Channel Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) in the Russian language segment is an active participant. Currently, the community unites 10 462 subscribers, ranking 11 707 in the Technologies & Applications category and 60 816 in the Russia region.

πŸ“Š Audience metrics and dynamics

Since its creation on Π½Π΅Π²Ρ–Π΄ΠΎΠΌΠΎ, the project has demonstrated rapid growth, gathering an audience of 10 462 subscribers.

According to the latest data from 27 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -37 over the last 30 days and by -2 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 16.71%. Within the first 24 hours after publication, content typically collects 7.56% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 748 views. Within the first day, a publication typically gains 791 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 1.
  • Thematic interests: Content is focused on key topics such as php, laravel, ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°, artisan, api.

πŸ“ Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
β€œΠ’ΡΠ΅ самоС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅. По Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @tproger_sales_bot Π£Ρ‡ΠΈΡ‚ΡŒΡΡ Ρƒ нас: clc.to/M561SQ Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b”

Thanks to the high frequency of updates (latest data received on 28 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

10 462
Subscribers
-224 hours
-257 days
-3730 days
Posts Archive
⚑️ БСрвСрная Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: Livewire ΠΈ Ρ‚Ρ€ΠΈ Π΅Π³ΠΎ собрата ИдСя ΠΎΠ΄Π½Π°: Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ HTML Π½Π° сСрвСрС ΠΈ Π³Π½Π°Ρ‚ΡŒ обновлСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, ΡƒΠ±Ρ€Π°Π² Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈΠ· уравнСния. Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅, ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ архитСктурная: πŸ”Ή Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Phoenix LiveView (Elixir) Π”Π΅Ρ€ΠΆΠΈΡ‚ состояниС Π² BEAM-процСссС Π½Π° WebSocket, вычисляя Π΄ΠΈΡ„Ρ„Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² шаблонС. πŸ”Ή Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Rails Hotwire Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· состояния, пСрСгоняя Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ куски HTML Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ HTTP, Ρ‡Ρ‚ΠΎ Π³Ρ€ΡƒΠ±ΠΎ, Π½ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ 80% Π·Π°Π΄Π°Ρ‡. πŸ”Ή ΠŸΠ°ΠΊΠ΅Ρ‚ Laravel Livewire ВыступаСт блиТайшим ΠΊΠ»ΠΎΠ½ΠΎΠΌ LiveView Π½Π° PHP, Π³Π΄Π΅ состояниС сСриализуСтся Π² JSON ΠΈ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Ρ‚ΡƒΠ΄Π°-ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС (хотя с Laravel Reverb доступСн WebSocket). πŸ”Ή Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Go Live ΠΈ HLive Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π½Π° WebSocket, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ экосистСму ΠΈ годятся лишь для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ². Π’Ρ‹Π±ΠΎΡ€ Ρ‚ΡƒΡ‚ Π½Π΅ ΠΏΡ€ΠΎ Β«Ρ‡Ρ‚ΠΎ быстрСС», Π° ΠΏΡ€ΠΎ экосистСму ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Для Laravel-стСка Livewire β€” СдинствСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ смСны языка. πŸ”— Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°

πŸ¦ΎπŸ§ πŸ‹οΈ ΠšΠ°Ρ‡Π°Π΅ΠΌ ΠΌΠΎΠ·Π³ΠΈ ΠΊ Π»Π΅Ρ‚Ρƒ! ВсС готовятся ΠΊ пляТному сСзону, Π° ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ…Π°Ρ€Π΄-скилы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ ΠΎΡ„Ρ„Π΅
πŸ¦ΎπŸ§ πŸ‹οΈ ΠšΠ°Ρ‡Π°Π΅ΠΌ ΠΌΠΎΠ·Π³ΠΈ ΠΊ Π»Π΅Ρ‚Ρƒ! ВсС готовятся ΠΊ пляТному сСзону, Π° ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ…Π°Ρ€Π΄-скилы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ ΠΎΡ„Ρ„Π΅Ρ€, ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ· любой Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΈΡ€Π° 😎 ⚑️ РаспродаТа @proglib_academy: Π·Π°Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ самыС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€Π΅ΠΊΠΈ ΠΏΠΎ сниТСнным Ρ†Π΅Π½Π°ΠΌ! ➑️ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² β€” ΠΎΡ‚ 49 000 β‚½ (вмСсто 69 000 β‚½). ➑️ ΠšΡƒΡ€Ρ AgentOps β€” 129 000 β‚½ (вмСсто 149 000 β‚½). ➑️ ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ AI-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ β€” 23 990 β‚½ (вмСсто 31 990 β‚½). ➑️ ML для старта Π² Data Science β€” 28 990 β‚½ (вмСсто 38 990 β‚½). ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹? ⭐️Учим для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π°. Наши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Ρ‹ ΠΏΠΎΠ΄ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ бизнСса: ΠΊΠ°ΠΊ Π½Π΅ ΡΠ»ΠΈΡ‚ΡŒ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΊΠ°ΠΊ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ LLM Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π² бэкСндС ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ. ⭐️БпикСры β€” суровыС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ Ρƒ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… AI-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‚ΠΈΠΌΠ»ΠΈΠ΄ΠΎΠ² ΠΈ ML-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΈΠ· Ρ‚ΠΎΠΏΠΎΠ²Ρ‹Ρ… IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. β­οΈΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ΠœΡ‹ Π΄Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ матСматичСский Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ для понимания ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ», Ρ‚Π°ΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Π΅ инструмСнты оркСстрации Π°Π³Π΅Π½Ρ‚ΠΎΠ². ⭐️Много ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ Ρ„ΠΈΠ΄Π±Π΅ΠΊΠ°. Π’Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹, дСсятки практичСских Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ ΠΆΠΈΠ²ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с экспСртами Π² Ρ‡Π°Ρ‚Π΅ Telegram Π½Π° протяТСнии всСго обучСния. ⏳ ΠžΡΡ‚Π°Π²Π»ΡΠΉΡ‚Π΅ заявку ΠΈ Π±Ρ€ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ мСсто со Π‘ΠšΠ˜Π”ΠšΠžΠ™ 40%

πŸ’₯ vibe coding β€” это Π½Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Π° тСхничСский Π΄ΠΎΠ»Π³ с красивым Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π― сам ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ нСсколько ИИ-Π°Π³Π΅Π½Ρ‚ΠΎΠ², расчСхл
πŸ’₯ vibe coding β€” это Π½Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Π° тСхничСский Π΄ΠΎΠ»Π³ с красивым Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π― сам ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ нСсколько ИИ-Π°Π³Π΅Π½Ρ‚ΠΎΠ², Ρ€Π°ΡΡ‡Π΅Ρ…Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΏΠΎΡ€ Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ. Но ΡΠΌΠΎΡ‚Ρ€ΡŽ, Π²ΠΎ Ρ‡Ρ‚ΠΎ прСвращаСтся «просто опиши ΠΈΠ½Ρ‚Π΅Π½Ρ‚, Π° ΠΊΠΎΠ΄ появится». PR Π½Π° 600 строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π± Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π½Π° Ρ€Π΅Π²ΡŒΡŽ. ВСсты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΊ Π²Π΅Ρ€Π½ΡƒΠ» Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ Π·Π°ΠΌΠΎΠΊΠ°Π»ΠΈ. Β«ΠŸΠΎΡ‡ΠΈΠ½ΠΈΠ»ΠΈΒ» Π±Π°Π³, Π° ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π΅Π»ΠΎ Π΅Ρ‰Ρ‘ Π΄Π²Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Ρ‡ΠΈΡ‚Π°Π», Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π½Π°Π³Π΅Π½Π΅Ρ€ΠΈΠ»ΠΎΡΡŒ. Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ‚ΡŒ Π·Π° ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΈ Ρ€Π°Π·Π³Ρ€Π΅Π±Π°Ρ‚ΡŒ мСсяц β€” это Π½Π΅ 10x ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. AI это Π΄ΠΆΡƒΠ½ с бСсконСчной ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ контСкстом бизнСса. Π”ΠΆΡƒΠ½Ρƒ Ρ€Π΅Π²ΡŒΡŽΠΈΡˆΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, Π° с ИИ часто Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π³ΠΎΠ»ΠΎΠ²Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ «модСль ΠΆΠ΅ умная». Vibe coding β€” это Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции ΠΈΠ»ΠΈ ΠΌΡ‹ растим ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ? πŸ’¬ Π“ΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹ 🐸 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°

❓ РасскаТитС ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅ Memento Memento β€” это повСдСнчСский ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ. ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ словами: Ctrl+Z Π² любом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ β€” Π³Π΄Π΅-Ρ‚ΠΎ хранится снимок ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ состояния, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ. β–ͺ️ Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ β€” НуТна функция ΠΎΡ‚ΠΌΠ΅Π½Ρ‹/ΠΎΡ‚ΠΊΠ°Ρ‚Π° (undo) β€” НуТно ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ состояния β€” ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΊ полям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°Ρ€ΡƒΡˆΠΈΠ» Π±Ρ‹ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ β–ͺ️ Memento vs Command β€” Command: Ρ…Ρ€Π°Π½ΠΈΡ‚ дСйствиС ΠΈ ΡƒΠΌΠ΅Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ β€” Memento: Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ снимок состояния β–ͺ️ ΠœΠΈΠ½ΡƒΡ ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ памяти, Ссли состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° большоС ΠΈ снимки ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ часто.

πŸ” ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ MongoDB-запросов Π² Laravel ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚ часто связан Π½Π΅ с самим PHP. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Ρ‹ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ запросы, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ индСкс ΠΈΠ»ΠΈ дорогая агрСгация. Π‘Π΅Π· видимости Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π»ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ β€” Π³Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡ„Π΅ΠΉΠ½ΠΎΠΉ Π³ΡƒΡ‰Π΅. Π’ Π³Π°ΠΉΠ΄Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ Π»Ρ‘Π³ΠΊΠΈΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ для связки Laravel + MongoDB ΠΈΠ· Ρ‚Ρ€Π΅Ρ… частСй: β€” middleware замСряСт ΠΎΠ±Ρ‰ΡƒΡŽ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ HTTP-запроса; β€” класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ CommandSubscriber ΠΈΠ· MongoDB PHP driver, Π»ΠΎΠ²ΠΈΡ‚ события commandStarted / commandSucceeded / commandFailed ΠΈ считаСт Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹; β€” ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² QueryMonitorService ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ рСквСста ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ performance_logs. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ β†’ подписка рСгистрируСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² boot() ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°:
use function MongoDB\Driver\Monitoring\addSubscriber;

public function boot(): void
{
    addSubscriber(new MongoCommandSubscriber());
}
Π”Π°Π»ΡŒΡˆΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ сам ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ (find, aggregate, insert), ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³, Π±Π΅Π· ΠΏΡ€Π°Π²ΠΎΠΊ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Запросы дольшС ΠΏΠΎΡ€ΠΎΠ³Π° ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ is_slow. Π§Ρ‚ΠΎΠ±Ρ‹ коллСкция Π»ΠΎΠ³ΠΎΠ² Π½Π΅ Ρ€Π°Π·Ρ€Π°ΡΡ‚Π°Π»Π°ΡΡŒ Π΄ΠΎ нСприличия, Π½Π°Π²Π΅ΡˆΠΈΠ²Π°ΡŽΡ‚ TTL-индСкс Π½Π° created_at с expireAfterSeconds: 604800 (нСдСля). Mongo сам ΠΏΠΎΠ΄ΠΌΠ΅Ρ‚Π°Π΅Ρ‚ ΡΡ‚Π°Ρ€ΡŒΡ‘. πŸ”— ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° #how_to

πŸ‘€ ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ курс Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡, Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²Β» со скидкой 40% Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΌ
πŸ‘€ ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ курс Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡, Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²Β» со скидкой 40% Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° мая! ΠœΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ с дСсятками Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΡƒΡ‡Π»ΠΈ Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΠΎΠ»ΠΈ индустрии ΠΈ запускаСм ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ курс «ИИ-Π°Π³Π΅Π½Ρ‚Ρ‹ 5.0Β». πŸŽ‰ Π§Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅? - Как Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹. - Как Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ качСство ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π³Π΅Π½Ρ‚Π°. - Как Β«Π΄ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒΒ» RAG-систСмы Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства. - Как ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Π°Π³Π΅Π½Ρ‚Π° ΠΊ сбоям Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвисов Π±Π΅Π· падСния всСй систСмы, ΠΈ ΠΏΡ€ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅-ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π‘ΠΏΠΈΠΊΠ΅Ρ€Ρ‹ β€” ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π² AI ΠΈ Data Science Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… IT-компаниях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ЯндСкс, Π‘Π±Π΅Ρ€, Raft ΠΈ Π“Π°Π·ΠΏΡ€ΠΎΠΌΠ±Π°Π½ΠΊ Π΄Ρ€. Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: 6–12 нСдСль Π² зависимости ΠΎΡ‚ Ρ‚Π°Ρ€ΠΈΡ„Π°. πŸ‘‰ Π—Π°Π½ΠΈΠΌΠ°ΠΉΡ‚Π΅ мСсто Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ агСнтском интСнсивС ΠΏΠΎ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Ρ†Π΅Π½Π΅

🐧 Π‘Π°Π·Π° Linux, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ стыдно Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСрвСрами Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ. Π—Π°Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΡˆΠΏΠ°Ρ€Π³Π°Π»
🐧 Π‘Π°Π·Π° Linux, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ стыдно Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСрвСрами Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ. Π—Π°Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ. Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Ρƒ нас ΠΏΠΎ классикС:
Π€Π°ΠΉΠ»Ρ‹ ΠΈ навигация: ls, cd, mkdir, rm, mv, cp. Π‘Π°Π·Π°, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ‹ Π΄Π°ΠΆΠ΅ Π»ΠΎΠ³ΠΈ Π½Π΅ найдСшь. Поиск ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅: find, grep, cat. Π’Π²ΠΎΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Π΄Ρ€ΡƒΠ·ΡŒΡ ΠΏΡ€ΠΈ Π΄Π΅Π±Π°Π³Π΅ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Π»ΠΎΠ³ΠΎΠ² Π² поисках ΠΎΠ΄Π½ΠΎΠΉ ΡƒΠΏΠ°Π²ΡˆΠ΅ΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами: ps, kill, top. ЭкстрСнный Π½Π°Π±ΠΎΡ€ Ρ…ΠΈΡ€ΡƒΡ€Π³Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ процСсс ΠΏΠΎΡ‚Ρ‘ΠΊ ΠΏΠΎ памяти ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» всю Π½ΠΎΠ΄Ρƒ. ΠŸΡ€Π°Π²Π° ΠΈ ΡΠ΅Ρ‚ΡŒ: chmod, ping, ifconfig.
А ΠΊΠ°ΠΊ Ρƒ вас ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ с консолью? ❀️ β€” Π–ΠΈΠ²Ρƒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ πŸ”₯ β€” Π—Π½Π°ΡŽ Π±Π°Π·Ρƒ πŸ”Ή ΠšΡƒΡ€Ρ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ IT для нСпрограммистов» πŸ”Ή ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡŽ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° πŸ”Ή Π‘Π°ΠΉΡ‚ АкадСмии πŸ”Ή Π‘Π°ΠΉΡ‚ Proglib πŸƒβ€β™€οΈ Азбука Π°ΠΉΡ‚ΠΈΡˆΠ½ΠΈΠΊΠ° #Π»ΠΈΠΊΠ±Π΅Π·

⚑️ Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с экспСртом Proglib Academy: AI-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ Антон Будняк Антон β€” мастСр прСвращСния сырых AI-ΠΈΠ΄Π΅ΠΉ Π² отказоустой
⚑️ Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с экспСртом Proglib Academy: AI-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ Антон Будняк Антон β€” мастСр прСвращСния сырых AI-ΠΈΠ΄Π΅ΠΉ Π² отказоустойчивыС систСмы. Он Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ MVP Π·Π° нСдСлю ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ Ρ€Π°ΡΡΡ‹ΠΏΠ°Π»Π°ΡΡŒ ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π² сотни тысяч ΡŽΠ·Π΅Ρ€ΠΎΠ². Π—Π° Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ†Π΅Π½ΠΈΡ‚ IT-ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ: 🟣 ΠžΠΏΡ‹Ρ‚ Π² Ρ„ΠΈΠ½Ρ‚Π΅Ρ…Π΅ ΠΈ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ бизнСсС
Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ML-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Ρ„ΠΈΠ½Ρ‚Π΅Ρ…Π΅ с экономичСским эффСктом Π±ΠΎΠ»Π΅Π΅ 100 ΠΌΠ»Π½ β‚½
🟣 Запуск ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π½Π° 6.000+ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
Антон строит сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ тысячи людСй Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄Π΅.
🟣 УскоряСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ
ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» ML-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΈ ΠΊΡ€Π°Ρ‚Π½ΠΎ сократил врСмя ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°
πŸ“š Π“Π΄Π΅ Антон Ρ‡Π΅Ρ€ΠΏΠ°Π΅Ρ‚ знания (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ экспСрта): - X (Twitter) β€” Π³Π»Π°Π²Π½Ρ‹ΠΉ источник новостСй. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π±Π»ΠΎΠ³ Бориса Π§Π΅Ρ€Π½ΠΈ (создатСля Claude Code) β€” Ρ‚Π°ΠΌ Π±Π°Π·Π° ΠΏΡ€ΠΎ использованиС ИИ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. - НСтворкинг Π² Π’Π“: Ρ‡Π°Ρ‚Ρ‹ LLM ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΠΈ AI-Ρ‡Π°Ρ‚ β€” здСсь ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° любой тСхничСский вопрос. - Новости AI: ΠΊΠ°Π½Π°Π»Ρ‹ Биолошная ΠΈ Denis Sexy IT. На курсС Agentops Антон ΡƒΡ‡ΠΈΡ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Β«Π½Π΅ΡƒΠ±ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉΒ» бэкСнд: Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с очСрСдями, Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°ΠΌΠΈ ΠΈ балансировкой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши Π°Π³Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ 24/7. 🎁 МайскиС Π‘ΠšΠ˜Π”ΠšΠ˜ Π² Proglib Academy! Π”ΠΎ ΠΊΠΎΠ½Ρ†Π° мая Π½Π° всС курсы Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ AgentOps ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ИИ-Π°Π³Π΅Π½Ρ‚ΠΎΠ²) дСйствуСт скидка -40%. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΉΡ‚ΠΈ Π² AI-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ΄ присмотром ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ². Π£Π·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρƒ Антона: πŸ‘‰ ΠšΡƒΡ€Ρ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ AI-Π»ΠΎΠ³ΠΈΠΊΡƒ Π² бэкСнд ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСрвиса ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ? πŸ‘ β€” Π”Π°, ΠΆΠ΄Π΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… Π»ΠΈΡ† πŸ”₯ β€” ΠŸΠΎΠΉΠ΄Ρƒ ΠΏΠΎΠ΄ΠΏΠΈΡˆΡƒΡΡŒ Π½Π° ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈΠ· списка Антона πŸƒβ€β™€οΈ Proglib Academy

⚑️ Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ OPcache Preloading Π² PHP 8.3 ΠΈ Π½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ ΠŸΡ€Π΅Π»ΠΎΠ°Π΄ΠΈΠ½Π³ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ классы ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ стартС FPM ΠΈ Π΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΈΡ… Π² shared memory. ΠœΠΈΠ½ΡƒΡ ~30% ΠΊ latency Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ рСквСст. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. 1️⃣ Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² php.ini
opcache.enable=1
opcache.preload=/var/www/app/preload.php
opcache.preload_user=www-data
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
validate_timestamps=0 β†’ Π½Π° ΠΏΡ€ΠΎΠ΄Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ дСплоями. НС Ρ‚Ρ€Π°Ρ‚ΠΈΠΌ syscall Π½Π° stat() ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Бброс кэша Ρ‡Π΅Ρ€Π΅Π· рСстарт FPM (Deployer сдСлаСт сам). 2️⃣ ПишСм preload.php ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ
// ❌ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ нСльзя
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/var/www/app/vendor')
);
foreach ($files as $file) {
    if ($file->getExtension() === 'php') {
        opcache_compile_file($file->getRealPath());
    }
}
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: интСрфСйсы, Ρ‚Ρ€Π΅ΠΉΡ‚Ρ‹, абстрактныС классы β†’ порядок Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Π°ΠΆΠ΅Π½, ΠΎΠ΄Π½Π° битая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ = FPM Π½Π΅ стартуСт.
// βœ… Ρ‡Π΅Ρ€Π΅Π· Composer class map + мягкий fallback
// preload.php
require __DIR__ . '/vendor/autoload.php';

$classMap = require __DIR__ . '/vendor/composer/autoload_classmap.php';

$ignore = [
    '/Tests/', '/test/', '/fixtures/', '/stub/',
    '/migrations/', '/seeders/', '/factories/',
];

foreach ($classMap as $class => $file) {
    foreach ($ignore as $pattern) {
        if (str_contains($file, $pattern)) continue 2;
    }

    try {
        if (!class_exists($class, false)
            && !interface_exists($class, false)
            && !trait_exists($class, false)
            && !enum_exists($class, false)
        ) {
            require_once $file;
        }
    } catch (\Throwable) {
        // класс Π½Π΅ загрузился β€” пропускаСм, Π½Π΅ роняСм FPM
    }
}
class_exists($class, false) β†’ false ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ»ΠΎΠ°Π΄. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π»ΠΈ класс ΡƒΠΆΠ΅ ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ зависимостСй. 3️⃣ Для Laravel Π±Π΅Ρ€Ρ‘ΠΌ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅
composer require laragear/preload
php artisan preload:generate
ΠŸΠ°ΠΊΠ΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ opcache_get_status() Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ preload-список ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… классов, Π½Π΅ ΠΈΠ· всСго vendor.
// config/preload.php
return [
    'condition' => true,
    'memory_limit' => 64, // MB ΠΏΠΎΠ΄ ΠΏΡ€Π΅Π»ΠΎΠ°Π΄
    'include' => [],
    'exclude' => [
        'Illuminate\Support\Facades\*',
    ],
    'overwrite' => true,
];
Ѐасады ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ, ΠΎΠ½ΠΈ рСзолвятся Π»Π΅Π½ΠΈΠ²ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ ΠΈΠΌ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚. 4️⃣ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚
// диагностика ΠΈΠ· CLI Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· FPM
// создаём Ρ€ΠΎΡƒΡ‚ ΠΈΠ»ΠΈ скрипт

$status = opcache_get_status();
$preload = $status['preload_statistics'] ?? [];

echo "Preloaded classes: " . count($preload['classes'] ?? []) . PHP_EOL;
echo "Preloaded funcs:   " . count($preload['functions'] ?? []) . PHP_EOL;
echo "Memory used:       " . round($preload['memory_consumption'] / 1024 / 1024, 2) . " MB" . PHP_EOL;
Π’Π°ΠΆΠ½ΠΎ: php -r "opcache_get_status();" Π² CLI ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ пустоту. ΠŸΡ€Π΅Π»ΠΎΠ°Π΄ ΠΆΠΈΠ²Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² памяти FPM-мастСра. 5️⃣ Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π² Π΄Π΅ΠΏΠ»ΠΎΠΉ
// deploy.php (Deployer)
task('php-fpm:reload', function () {
    run('sudo systemctl reload php8.3-fpm');
});

after('deploy:symlink', 'php-fpm:reload');
reload, Π½Π΅ restart. Reload Π΄Π΅Π»Π°Π΅Ρ‚ graceful: мастСр-процСсс ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ ΠΏΡ€Π΅Π»ΠΎΠ°Π΄, старыС Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ рСквСсты. Zero downtime. 6️⃣ ΠŸΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ β€” ΠŸΠ°ΠΌΡΡ‚ΡŒ: ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ ΠΆΡ€Ρ‘Ρ‚ shared memory. 2000 классов β‰ˆ 30–50 MB. Если memory_consumption ΠΌΠ°Π», Ρ‡Π°ΡΡ‚ΡŒ классов ΠΌΠΎΠ»Ρ‡Π° Π½Π΅ загрузится β€” НаслСдованиС: Ссли ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ΠΈΡ‚Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Ρ€Π°Π½ΡŒΡˆΠ΅. Composer classmap Ρ€Π΅ΡˆΠ°Π΅Ρ‚ это, Ρ€ΡƒΡ‡Π½ΠΎΠΉ glob β€” Π½Π΅Ρ‚ β€” Enum + PHP 8.1+: backed enum'Ρ‹ с интСрфСйсами ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π»ΠΎΠ°Π΄Π΅. Если Π»ΠΎΠ²ΠΈΡ‚Π΅ segfault ΠΏΡ€ΠΈ стартС FPM β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ enum'Ρ‹ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ β€” Xdebug: ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ нСсовмСстим с xdebug. На dev-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ opcache.preload πŸ“Œ Π˜Ρ‚ΠΎΠ³ Preloading β€” бСсплатный буст пСрформанса Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π°. Но Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ΠΈΡ‚Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ошибки Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚Π΅ reload FPM ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅. Π’ связкС с Deployer это ΠΎΠ΄Π½Π° строка Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π΅. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°

πŸ“Œ Π˜Ρ‚ΠΎΠ³ Preloading β€” бСсплатный буст пСрформанса Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π°. Но Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ΠΈΡ‚Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ошибки Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚Π΅ reload FPM ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅. Π’ связкС с Deployer это ΠΎΠ΄Π½Π° строка Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π΅. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° (https://t.me/phpproglib) Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°

⚑️ Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ OPcache Preloading Π² PHP 8.3 ΠΈ Π½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ ΠŸΡ€Π΅Π»ΠΎΠ°Π΄ΠΈΠ½Π³ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ классы ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ стартС FPM ΠΈ Π΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΈΡ… Π² shared memory. ΠœΠΈΠ½ΡƒΡ ~30% ΠΊ latency Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ рСквСст. Но 90% Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Π΅Π³ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. 1️⃣ Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² php.ini ini
opcache.enable=1
opcache.preload=/var/www/app/preload.php
opcache.preload_user=www-data
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
validate_timestamps=0 β€” Π½Π° ΠΏΡ€ΠΎΠ΄Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ дСплоями. НС Ρ‚Ρ€Π°Ρ‚ΠΈΠΌ syscall Π½Π° stat() ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Бброс кэша β€” Ρ‡Π΅Ρ€Π΅Π· рСстарт FPM (Deployer сдСлаСт сам). 2️⃣ ПишСм preload.php ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Наивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всё подряд. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ fatal ΠΏΡ€ΠΈ стартС FPM. php
// ❌ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ нСльзя
$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/var/www/app/vendor')
);
foreach ($files as $file) {
    if ($file->getExtension() === 'php') {
        opcache_compile_file($file->getRealPath());
    }
}
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: интСрфСйсы, Ρ‚Ρ€Π΅ΠΉΡ‚Ρ‹, абстрактныС классы β€” порядок Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Π°ΠΆΠ΅Π½. Одна битая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ = FPM Π½Π΅ стартуСт. php
// βœ… Ρ‡Π΅Ρ€Π΅Π· Composer class map + мягкий fallback
// preload.php
require __DIR__ . '/vendor/autoload.php';

$classMap = require __DIR__ . '/vendor/composer/autoload_classmap.php';

$ignore = [
    '/Tests/', '/test/', '/fixtures/', '/stub/',
    '/migrations/', '/seeders/', '/factories/',
];

foreach ($classMap as $class => $file) {
    foreach ($ignore as $pattern) {
        if (str_contains($file, $pattern)) continue 2;
    }

    try {
        if (!class_exists($class, false)
            && !interface_exists($class, false)
            && !trait_exists($class, false)
            && !enum_exists($class, false)
        ) {
            require_once $file;
        }
    } catch (\Throwable) {
        // класс Π½Π΅ загрузился β€” пропускаСм, Π½Π΅ роняСм FPM
    }
}
class_exists($class, false) β€” false ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ»ΠΎΠ°Π΄. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π»ΠΈ класс ΡƒΠΆΠ΅ ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ зависимостСй. 3️⃣ Для Laravel β€” Π±Π΅Ρ€Ρ‘ΠΌ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ bash
composer require laragear/preload
php artisan preload:generate
ΠŸΠ°ΠΊΠ΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ opcache_get_status() Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ preload-список ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… классов. НС ΠΈΠ· всСго vendor. php
// config/preload.php
return [
    'condition' => true,
    'memory_limit' => 64, // MB ΠΏΠΎΠ΄ ΠΏΡ€Π΅Π»ΠΎΠ°Π΄
    'include' => [],
    'exclude' => [
        'Illuminate\Support\Facades\*',
    ],
    'overwrite' => true,
];
Ѐасады ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ β€” ΠΎΠ½ΠΈ рСзолвятся Π»Π΅Π½ΠΈΠ²ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ ΠΈΠΌ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚. 4️⃣ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ php
// диагностика ΠΈΠ· CLI Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· FPM
// создаём Ρ€ΠΎΡƒΡ‚ ΠΈΠ»ΠΈ скрипт

$status = opcache_get_status();
$preload = $status['preload_statistics'] ?? [];

echo "Preloaded classes: " . count($preload['classes'] ?? []) . PHP_EOL;
echo "Preloaded funcs:   " . count($preload['functions'] ?? []) . PHP_EOL;
echo "Memory used:       " . round($preload['memory_consumption'] / 1024 / 1024, 2) . " MB" . PHP_EOL;
Π’Π°ΠΆΠ½ΠΎ: php -r "opcache_get_status();" Π² CLI ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ пустоту. ΠŸΡ€Π΅Π»ΠΎΠ°Π΄ ΠΆΠΈΠ²Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² памяти FPM-мастСра. 5️⃣ Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π² Π΄Π΅ΠΏΠ»ΠΎΠΉ php
// deploy.php (Deployer)
task('php-fpm:reload', function () {
    run('sudo systemctl reload php8.3-fpm');
});

after('deploy:symlink', 'php-fpm:reload');
reload, Π½Π΅ restart. Reload Π΄Π΅Π»Π°Π΅Ρ‚ graceful: мастСр-процСсс ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ ΠΏΡ€Π΅Π»ΠΎΠ°Π΄, старыС Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ рСквСсты. Zero downtime. 6️⃣ ΠŸΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ β€” ΠŸΠ°ΠΌΡΡ‚ΡŒ: ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ ΠΆΡ€Ρ‘Ρ‚ shared memory. 2000 классов β‰ˆ 30–50 MB. Если memory_consumption ΠΌΠ°Π» β€” Ρ‡Π°ΡΡ‚ΡŒ классов ΠΌΠΎΠ»Ρ‡Π° Π½Π΅ загрузится β€” НаслСдованиС: Ссли ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ΠΈΡ‚Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Ρ€Π°Π½ΡŒΡˆΠ΅. Composer classmap Ρ€Π΅ΡˆΠ°Π΅Ρ‚ это, Ρ€ΡƒΡ‡Π½ΠΎΠΉ glob β€” Π½Π΅Ρ‚ β€” Enum + PHP 8.1+: backed enum'Ρ‹ с интСрфСйсами ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π»ΠΎΠ°Π΄Π΅. Если Π»ΠΎΠ²ΠΈΡ‚Π΅ segfault ΠΏΡ€ΠΈ стартС FPM β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ enum'Ρ‹ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ β€” Xdebug: ΠΏΡ€Π΅Π»ΠΎΠ°Π΄ нСсовмСстим с xdebug. На dev-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ opcache.preload

πŸ›  Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ SPA Π½Π° Symfony Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ строчки React Богласись, Ρ‡Ρ‚ΠΎ нСприятСн JS-Π½Π°Π»ΠΎΠ³: Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³Π°, Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅, возня с Vite ΠΈ Ρ€Π°Π·Π΄ΡƒΡ‚Ρ‹Π΅ Π±Π°Π½Π΄Π»Ρ‹. Hotwire ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ схСму β€” сСрвСр ΡˆΠ»Ρ‘Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ куски HTML, Turbo подмСняСт DOM, страница Π½Π΅ пСрСзагруТаСтся. πŸš€ Π‘Ρ‚Π΅ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π°: β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Symfony 7.4 + AssetMapper (Π±Π΅Π· Webpack ΠΈ Node); β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Turbo Drive/Frames/Streams для Π±Π΅ΡΡˆΠΎΠ²Π½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ; β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Stimulus Ρ‚Π°ΠΌ, Π³Π΄Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ΅Π½ JS (drag & drop); β€” ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Mercure Ρ‡Π΅Ρ€Π΅Π· SSE вмСсто Π²ΠΎΠ·Π½ΠΈ с WebSockets Π½Π° PHP; β€” стили Tailwind Ρ‡Π΅Ρ€Π΅Π· symfonycasts-Π±Π°Π½Π΄Π» (снова Π±Π΅Π· npm); ΠšΡ€ΡƒΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‘ΠΌ β†’ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ доски гСнСрятся ΠΈΠ· PHP Enum:
enum TaskStatus: string
{
    case TODO = 'todo';
    case IN_PROGRESS = 'in_progress';
    case DONE = 'done';
}

#[ORM\Column(length: 50, enumType: TaskStatus::class)]
private TaskStatus $status = TaskStatus::TODO;
Достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ TaskStatus::cases() Π² Twig ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ статус добавится ΠΎΠ΄Π½ΠΎΠΉ строкой Π² Enum. Никакой ΠΏΡ€Π°Π²ΠΊΠΈ шаблонов ΠΈ магичСских строк (Doctrine сам сСриализуСт значСния Π² varchar). Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ HTML5 DnD ΠΈ Turbo Streams Ρ‡Π΅Ρ€Π΅Π· Mercure для синхронизации ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ. πŸ”— ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°

βŒ› БохраняйтС ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ проСктирования

Π”ΠΎ 31 мая ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ любой курс Proglib Academy со скидкой 40% Если Π΄Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π² Python, ML, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΈΠ»ΠΈ
Π”ΠΎ 31 мая ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ любой курс Proglib Academy со скидкой 40% Если Π΄Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π² Python, ML, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΈΠ»ΠΈ AI-Π°Π³Π΅Π½Ρ‚Π°Ρ…, сСйчас самоС врСмя Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ сниТСнной Ρ†Π΅Π½Π΅. 🎁 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² β€” ΠΎΡ‚ 49.000 β‚½ (вмСсто 69.000 β‚½) ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ курс ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡, Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² 🎁 ΠšΡƒΡ€Ρ AgentOps β€” 129.000 β‚½ (вмСсто 149.000 β‚½) Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ LLM-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ AI-Π»ΠΎΠ³ΠΈΠΊΡƒ Π² бэкСнд ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСрвиса. 🎁 ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ AI-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ β€” 23.990 β‚½ (вмСсто 31.990 β‚½) ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π±Π°Π·Π° ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ML ΠΈ дальнСйшСго развития Π² AI. 🎁 ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для Data Science β€” ΠΎΡ‚ 29.990 β‚½ (вмСсто 39.990 β‚½) ΠšΡƒΡ€Ρ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ Π½Π° собСсСдованиях Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π΄Π°Ρ‚Π°-сайСнтиста Π² Π±ΠΈΠ³Ρ‚Π΅Ρ…Π΅. 🎁 ML для старта Π² Data Science β€” 28.990 β‚½ (вмСсто 38.990 β‚½) Π Π°Π·Π±Π΅Ρ€Ρ‘Ρ‚Π΅ΡΡŒ Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ: ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… понятий ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄ΠΎ ансамблСй, бустинга ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм. 🎁 ΠžΡΠ½ΠΎΠ²Ρ‹ IT для нСпрограммистов β€” 16.990 β‚½ (вмСсто 28.990 β‚½) ΠšΡƒΡ€Ρ для IT-Ρ€Π΅ΠΊΡ€ΡƒΡ‚Π΅Ρ€ΠΎΠ², ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΎΠ»ΠΎΠ³ΠΎΠ², ΠΏΡ€ΠΎΠ΄ΠΆΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΎΠ΄Π°ΠΊΡ‚ΠΎΠ² ΠΈ всСх, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с IT, Π½ΠΎ Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄. 🎁 АрхитСктуры ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования β€” 27.990 β‚½ (вмСсто 37.900 β‚½) ΠžΡΠ²ΠΎΠΈΡ‚Π΅ основныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Π΅Ρ‚Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. 🎁 БпСциалист ΠΏΠΎ ИИ β€” 89.000 β‚½ (вмСсто 113.900 β‚½) ΠšΡƒΡ€Ρ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ Π² сфСрС ИИ, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ ΠΈΠ· 5 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ слоТных AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ². 🎁 Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… β€” 33.990 β‚½ (вмСсто 57.990 β‚½) ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ ΠΊ алгоритмичСским собСсСдованиям, Ρ€Π°Π·Π±Π΅Ρ€Ρ‘Ρ‚Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΊΠΎΠ΄. 🎁 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° языкС Python β€” 27.990 β‚½ (вмСсто 47.390 β‚½) ΠžΡΠ²ΠΎΠΈΡ‚Π΅ Python Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅: Π±Π΅Π· сухой Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, с пошаговой ΠΏΡ€ΠΎΠΊΠ°Ρ‡ΠΊΠΎΠΉ Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΈ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π² ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ. πŸ™Œ Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ курс ΠΏΠΎ ссылкС, оставляйтС заявку, ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ΄ ваши Ρ†Π΅Π»ΠΈ β€” https://clc.to/HglYew

πŸ”§ Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с kubectl НуТно быстро Ρ„ΠΎΡ€Π²Π°Ρ€Π΄Π½ΡƒΡ‚ΡŒ ΠΏΠΎΡ€Ρ‚ сСрвиса ΠΈΠ· Kubernetes Π½Π° localhost для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ? kubectl port-forward β€” ваш Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ Π² кластСр Π±Π΅Π· Ingress, LoadBalancer ΠΈ VPN. πŸ”Ή Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ β€” Доступ ΠΊ сСрвисам Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Π±Π΅Π· внСшнСго endpoint-Π°. β€” ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π‘Π”, Redis, RabbitMQ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ прямо с Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. β€” НС Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ NodePort ΠΈΠ»ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ingress. πŸ”Ή Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ β€” К ΠΏΠΎΠ΄Ρƒ: kubectl port-forward pod/my-pod 8080:80 β€” К сСрвису: kubectl port-forward svc/my-service 5432:5432 β€” К Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚Ρƒ: kubectl port-forward deploy/my-app 3000:3000 β€” Π”Ρ€ΡƒΠ³ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚: kubectl port-forward svc/postgres 15432:5432 (localhost:15432 β†’ postgres:5432) β€” Π‘Π»ΡƒΡˆΠ°Ρ‚ΡŒ Π½Π° всСх интСрфСйсах: kubectl port-forward --address 0.0.0.0 svc/my-service 8080:80

πŸ’₯ Β«Clean CodeΒ» β€” самая пСрСоцСнённая ΠΊΠ½ΠΈΠ³Π° Π² индустрии Π― Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π° плохая. Π― Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° принСсла массовому Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ большС Π²Ρ€Π΅Π΄Π°, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·Ρ‹. Uncle Bob написал Π½Π°Π±ΠΎΡ€ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ, Π° индустрия ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π° ΠΈΡ… Π² Ρ€Π΅Π»ΠΈΠ³ΠΈΡŽ. Β«ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅ 5 строк». Β«ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс β€” ΠΎΠ΄Π½Π° ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΒ». «Имя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡΠ°ΠΌΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΒ». Π—Π²ΡƒΡ‡ΠΈΡ‚ красиво, Π° Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅: β€” 47 ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ вызываСтся Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· β€” AbstractNotificationStrategyProviderFactory β€” 6 слоёв абстракции Ρ€Π°Π΄ΠΈ эндпоинта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² β€” Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ с СдинствСнной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Β«Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅Β» Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ всСгда «чистыС». И Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ исходники любого ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π² вашСй экосистСмС. God-классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π° 80 строк, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹ Β«don't ask whyΒ». Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, развиваСтся, приносит дСньги. ΠœΠΎΡ‘ ΠΌΠ½Π΅Π½ΠΈΠ΅: β†’ Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ понятСн Ρ‡Π΅Ρ€Π΅Π· 6 мСсяцСв. НС «чист» β€” Π° понятСн. β†’ Абстракция ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π°, ΠΊΠΎΠ³Π΄Π° Ρƒ Π½Π΅Ρ‘ большС ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прямо сСйчас, Π° Π½Π΅ Β«ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΒ». β†’ YAGNI Π²Π°ΠΆΠ½Π΅Π΅ SOLID. ΠšΠ½ΠΈΠ³Ρƒ стоит ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΊ свСдСнию, ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ основы. Но Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅. πŸ’¬ ΠŸΠΈΡˆΠΈΡ‚Π΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹ Π’Π°ΡˆΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅

πŸ” Π›ΠΎΠ²ΠΈΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ SQL-запрос Π² Laravel Π”Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ Β«Π° Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ»Π΅Ρ‚Π΅Π»ΠΎ Π² Π±Π°Π·Ρƒ?Β» Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ нСпросто. Но Ρ‡Π΅Ρ€Π΅Π· DB::listen() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос вмСстС с Π±ΠΈΠ½Π΄ΠΈΠ½Π³Π°ΠΌΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ выполнСния.
DB::listen(function (QueryExecuted $query) {
    dump($query->sql);      // select * from `users` where `id` = ? limit 1
    dump($query->bindings); // [0 => 1]
    dump($query->time);     // 6.05 (ms)
});
По сути, это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎ Π΄Π΅Π±Π°Π³. МоТно ΡΠ»Π°Ρ‚ΡŒ Π°Π»Π΅Ρ€Ρ‚ Π² Slack, Ссли запрос Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ дольшС ΠΏΠΎΡ€ΠΎΠ³Π°. А для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° сСссии Π΅ΡΡ‚ΡŒ связка DB::enableQueryLog() + DB::getRawQueryLog(). ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ это Π² ΠΏΡ€ΠΎΠ΄Π΅ (ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ whenQueryingForLongerThan)? Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°

Какой ΠΈΠ· пСрСчислСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ поддСрТиваСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ password_hash()?
Anonymous voting

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter - Statistics & analytics of Telegram channel @phpproglib