En plus des principales fonctionnalités annoncées dans les articles précédents de cette série, Symfony 8.1 inclut de nombreuses petites améliorations qui facilitent le travail quotidien. Cet article en met en évidence un deuxième lot.
Le composant Sémaphore limite le nombre de processus pouvant accéder simultanément à une ressource partagée. Jusqu'à présent, son seul magasin intégré était basé sur Redis, ce qui laissait les applications utilisant d'autres backends sans option utilisable.
Symfony 8.1 ajoute unLockStorequi construit un sémaphore au-dessus du composant Lock, afin que vous puissiez réutiliser n'importe quel backend de verrouillage (base de données, système de fichiers, Redis, etc.). Un sémaphore avec une limite de N est implémenté en utilisant N verrous individuels en arrière-plan :
utilisez Symfony\Component\Lock\LockFactory ; utilisez Symfony\Component\Lock\Store\FlockStore ; utilisez Symfony\Component\Semaphore\SemaphoreFactory ; utilisez Symfony\Component\Semaphore\Store\LockStore ; $lockFactory = nouveau LockFactory(nouveau FlockStore()); $semaphoreFactory = new SemaphoreFactory(new LockStore($lockFactory)); // autorise au plus 3 processus à conserver ce sémaphore en même temps $semaphore = $semaphoreFactory->createSemaphore('thumbnail-generation', 3); $sémaphore->acquérir();Lorsque vous utilisez FrameworkBundle, pointez le sémaphore vers un verrou configuré avec le nouveauverrouillage://DSN :
# config/packages/semaphore.yaml framework : lock : par défaut : 'flock' redis : '%env(REDIS_DSN)%' sémaphore : par défaut : 'lock://' # utilise le verrou "par défaut" autre : 'lock://redis' # utilise le verrou "redis"Lors de la désérialisation d'une charge utile entrante dans un objet, vous pouvez transmettre leCOLLECT_DENORMALIZATI...
[Courte citation de 8% de l'article original]