[ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ»ΠΈΡΠ΅Π΅Π²] [deworker.pro] Π‘ΠΏΠΎΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ PHP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (2024)
Π‘ΠΏΠΎΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ PHP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ [deworker.pro] [ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ»ΠΈΡΠ΅Π΅Π²]
ΠΠ° ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΡΡΠΈΠΌΠ΅ ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ.
ΠΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΈ ΠΌΠΎΠ½ΡΠΈΡΡΡΡΡΡ ΡΠΊΡΠΈΠ½ΠΊΠ°ΡΡΡ ΠΏΡΠΎΠ²Π΅Π΄ΡΠΌ Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΡΡΠΈΠΌ Π½Π° ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΌΠ΅ΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ.
Π ΡΡΠΎΡ ΡΠ°Π· ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΡΠ°Π±ΠΎΡΡ PHP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ OpCache, ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄ΠΎ Preload Ρ JIT ΠΈ RoadRunner, Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Fiber-ΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ Π½ΡΠ°Π½ΡΠΎΠ² Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ . ΠΠΎΡΡΠ΅Π½ΠΈΡΡΠ΅ΠΌΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Ρ Π±ΡΠ½ΡΠΌΠ°ΡΠΊΠ°ΠΌΠΈ.
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ stateless-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΏΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π·Π°ΠΏΡΠΎΡΠ°.
UPD: ΠΡΠΎΠ²Π΅Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Slim ΠΈ Symfony.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅:
Π‘ΠΏΠΎΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ PHP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ [deworker.pro] [ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ»ΠΈΡΠ΅Π΅Π²]
ΠΠ° ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΡΡΠΈΠΌΠ΅ ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ.
ΠΠΎΠΊΠ° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΈ ΠΌΠΎΠ½ΡΠΈΡΡΡΡΡΡ ΡΠΊΡΠΈΠ½ΠΊΠ°ΡΡΡ ΠΏΡΠΎΠ²Π΅Π΄ΡΠΌ Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΡΡΠΈΠΌ Π½Π° ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΌΠ΅ΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ.
Π ΡΡΠΎΡ ΡΠ°Π· ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΡΠ°Π±ΠΎΡΡ PHP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ OpCache, ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄ΠΎ Preload Ρ JIT ΠΈ RoadRunner, Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Fiber-ΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ Π½ΡΠ°Π½ΡΠΎΠ² Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ . ΠΠΎΡΡΠ΅Π½ΠΈΡΡΠ΅ΠΌΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Ρ Π±ΡΠ½ΡΠΌΠ°ΡΠΊΠ°ΠΌΠΈ.
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ stateless-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΏΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π·Π°ΠΏΡΠΎΡΠ°.
UPD: ΠΡΠΎΠ²Π΅Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Slim ΠΈ Symfony.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅:
- 00:00:00 - ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅
- 00:00:53 - ΠΠΎΠΏΡΠΎΡΡ Π² ΡΠ°ΡΠ΅
- 00:06:18 - ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΊΠΎΡΠΈΡΡ
- 00:31:07 - ΠΠ΅ΠΌΠΎ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° SlimPHP
- 00:41:36 - Π‘Π΅ΡΠ²ΠΈΡ Benchmark Π΄Π»Ρ Π·Π°ΠΌΠ΅ΡΠΎΠ²
- 00:46:30 - ΠΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ
- 00:49:28 - Π‘Π»ΡΡΠ°ΠΉ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ
- 00:52:26 - ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ² Ρ OpCache
- 01:01:14 - ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Ρ JIT
- 01:07:22 - Π ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ΅Π² OpCache ΡΠ΅ΡΠ΅Π· Preload
- 01:24:34 - ΠΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ JIT
- 01:30:23 - ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- 01:53:57 - ΠΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- 02:03:38 - ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Ρ PHP-FPM Π½Π° RoadRunner
- 03:07:48 - ΠΠ΅ΠΌΠΎ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Symfony
- 03:19:24 - OpCache ΠΈ Π³ΠΎΡΠΎΠ²ΡΠΉ Preload
- 03:23:22 - ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ RoadRunner ΠΊ Symfony
- 03:33:50 - ΠΠ»Ρ Laravel ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ²
- 03:37:43 - ΠΠ±Π·ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ Π½ΡΠ°Π½ΡΡ
- 03:43:50 - ΠΡΠ²Π΅ΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ
- 00:00:00 - ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅
- 00:01:29 - ΠΡΠΎ ΠΌΠΈΡΠ°ΠΏ Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΏΡΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ
- 00:10:58 - Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΏΡΠΈΡΠΎΠ΄Π° Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² RoadRunner
- 00:19:36 - ΠΠ΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΎΡ Doctrine Ρ EntityManager
- 00:26:30 - ΠΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ EntityManager ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ
- 00:40:18 - Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ PHP ΠΈ Java ΠΏΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Ρ Go ΠΈ TypeScript
- 01:09:06 - ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ waitRequest Π² RoadRunner
- 01:23:19 - ΠΠΈΡΠ΅ΠΌ Loop Π΄Π»Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°
- 01:47:04 - ΠΠΈΡΠ΅ΠΌ setTimeout Π½Π° PHP
- 02:10:35 - ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ΄
- 02:15:58 - ΠΠ΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° fetch ΠΏΠΎ HTTP
- 02:34:17 - EventLoop Π² JavaScript
- 02:46:30 - ΠΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠ΅ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
- 02:52:56 - ΠΠ±ΡΠ΅ΠΊΡ Promise ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ΅ΡΠ΅Π· await
- 03:11:03 - ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ ΡΠ΅ΡΠ΅Π· Promise::all
- 03:13:32 - ΠΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² Ρ yield
- 03:20:27 - ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ Fiber
- 04:00:10 - ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ»ΡΠ·Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°
- 04:10:56 - ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ AmPHP
- 04:24:35 - OpCache Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
- 04:25:20 - Π‘ΠΊΠ΅Π»Π΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- 04:29:06 - Π Π°Π±ΠΎΡΠ° Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ Π² Docker
- 04:35:09 - ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° AmPHP HTTP Server
- 04:40:09 - ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Connection Pool Π΄Π»Ρ ΠΠ
- 04:47:42 - Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° pcntl Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ
- 04:49:27 - ΠΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
- 05:14:59 - ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ReactPHP
- 05:19:25 - ΠΡΠ»ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ Π² Promise ΠΈ await
- 05:23:33 - ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° ReactPHP
- 05:49:52 - ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Swoole ΠΈ OpenSwoole
- 06:00:05 - ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° OpenSwoole
- 06:26:45 - ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ Statefull-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²
- 06:40:04 - Stateless-ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ°
- 06:50:30 - Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π·Π°ΠΏΡΠΎΡΠ°
- 07:05:58 - ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ORM ΠΏΡΠΈ ΠΊΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ
- 07:14:33 - ΠΡΠ²Π΅ΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ
Π‘ΠΊΡΡΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΠΉΡΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Π‘ΠΊΠ°ΡΠ°ΡΡ:Π‘ΠΊΡΡΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΠΉΡΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.