L’article explique comment éviter les race conditions dans Symfony Workflow en production, illustré par un bug où une commande passe simultanément en état "expédié" et "annulé". L’auteur montre que Symfony Workflow seul ne gère pas les accès concurrents, laissant deux processus modifier le même état en parallèle.
La solution repose sur le composant Symfony Lock, qui permet de verrouiller une ressource (comme une commande) pendant une transition. En utilisant Redis comme stockage partagé, le verrou empêche les accès simultanés et garantit qu’un seul processus peut modifier l’état à la fois. L’article détaille la configuration et l’intégration avec Symfony Messenger pour une gestion robuste des conflits.
L’auteur propose une implémentation progressive, partant d’une approche naïve pour aboutir à une solution production-ready, adaptable à tout projet Symfony utilisant des workers asynchrones.
Cet article explique comment Go gère efficacement les entrées/sorties réseau grâce à son modèle basé sur les goroutines et le netpoller, permettant de créer des applications scalables et performantes (comme des serveurs TCP, HTTP ou WebSocket). L'article détaille le fonctionnement interne de Go pour la gestion des connexions (via epoll/kqueue), illustre avec des exemples de code simples (serveur TCP, gestion des timeouts), et partage des bonnes pratiques : fermeture des connexions, optimisation des buffers, gestion des erreurs, et monitoring avec Prometheus. Un cas pratique montre la création d'un serveur WebSocket capable de gérer des milliers de connexions simultanées. L'auteur souligne aussi les pièges courants (fuites de goroutines, épuisement des descripteurs de fichiers) et propose des outils pour tester et déboguer (wrk, pprof). Idéal pour comprendre pourquoi Go excelle dans les applications réseau haute performance.
Les stratégies en question :
- prefetching
- memoization
- concurrent data fetching
- lazy loading
le tout illustré par des exemples en React ou en PHP
Tout est dans le titre
Une fonctionnalité introduite en PHP 8.1 pour la programmation concurrente : les "Fibers' L'auteur les présente et donne un exemple via une limitation d'usage API
Tout est dans le titre
Un article très intéressant sur les défauts de la programmation "concurrente", et montrant un parallèle très éclairant avec l'instruction "go to" telle qu'elle était pratiquée dans les années 60
Tout est dans le titre
... ou comment gérer des réservations simultanées par un mécanisme de verrouillage
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre