Skip to content

Commit 2c14407

Browse files
KevinMartinsDevUbiKevinMartinsDev
authored andcommitted
(Fr)Add warning on stateful services and shared memory model
1 parent 4d0fb7d commit 2c14407

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

docs/fr/worker.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,22 @@
33
Démarrez votre application une fois et gardez-la en mémoire.
44
FrankenPHP traitera les requêtes entrantes en quelques millisecondes.
55

6+
## Un changement de paradigme : Le modèle "Shared Memory"
7+
8+
Attention, ce mode ajoute un nouveau paradigme de développement. Si votre code n'est pas stateless (sans état), l'activation du mode worker risque d'introduire des comportements inattendus.
9+
10+
Contrairement au modèle PHP-FPM traditionnel ("Shared Nothing"), où la mémoire est effacée après chaque requête, le mode worker de FrankenPHP utilise un modèle de mémoire partagée ("Shared Memory Model").
11+
12+
L'application reste chargée en mémoire entre les requêtes. Par conséquent, tout état stocké dans vos services (propriétés d'objet, singletons, etc.) sera conservé et partagé entre les requêtes successives traitées par le même worker. Cela peut entraîner des fuites de données ou des états incohérents si votre application n'est pas conçue pour cela.
13+
14+
L'article suivant résume très bien ce problème et explique comment y remédier, notamment pour les applications Symfony en utilisant ResetInterface pour garantir que vos services sont "propres" à chaque nouvelle requête.
15+
16+
**Ressources supplémentaires :**
17+
18+
* **Article (EN)** : [Getting your Symfony app ready for Swoole, RoadRunner, and FrankenPHP](https://dev.to/sergiid/getting-symfony-app-ready-for-swoole-roadrunner-and-frankenphp-no-ai-involved-2d0g) - Explique le problème en détail et présente des solutions.
19+
* **Symfony** : La [documentation de Messenger](https://symfony.com/doc/current/messenger.html#stateless-worker) aborde également ce concept de "stateless worker".
20+
* **Outil** : [phanalist](https://github.com/denzyldick/phanalist) est un analyseur statique (mentionné dans l'article) qui peut vous aider à détecter les services "stateful" dans votre code.
21+
622
## Démarrage des scripts workers
723

824
### Docker

0 commit comments

Comments
 (0)