Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment puis-je différencier les singletons qui persistent et ceux qui ne le sont pas dans Octane


Comment puis-je différencier les singletons qui persistent et ceux qui ne le sont pas dans Octane


Pour différencier les singletons qui persistent de ceux qui ne le sont pas dans Laravel Octane, vous devez comprendre comment Octane gère les instances singleton et comment elles sont résolues. Voici les points clés à considérer :

Singletons qui persistent

1. Singletons dans les fournisseurs de services : les singletons résolus au sein des fournisseurs de services, en particulier dans les méthodes `boot` ou `register`, persisteront dans toutes les requêtes. En effet, ces singletons sont résolus lors du démarrage de l'application et sont stockés dans le cache du conteneur.

2. Warm Services : vous pouvez ajouter des singletons au tableau « warm » dans le fichier de configuration Octane pour vous assurer qu'ils sont résolus et conservés pendant le démarrage de l'application. De cette façon, ces singletons seront disponibles pour toutes les requêtes.

Singletons qui ne persistent pas

1. Singletons dans le traitement des demandes : les singletons résolus lors du traitement des demandes ne persisteront pas. Ils sont construits à chaque requête et ne sont pas stockés dans le cache du conteneur.

2. Flush Services : Si vous disposez d'un package qui enregistre et résout un singleton au sein d'un fournisseur de services et que vous souhaitez vider cette instance avant chaque requête, vous pouvez l'ajouter au tableau `flush` dans le fichier de configuration Octane. . Cela garantit que le singleton est supprimé du conteneur après avoir traité chaque demande.

Bonnes pratiques

1. Utiliser les rappels : lors de l'enregistrement des singletons, utilisez les rappels au lieu de l'instance réelle pour vous assurer qu'ils ne sont résolus qu'une seule fois.

2. Évitez les propriétés statiques : évitez d'utiliser des propriétés statiques dans vos singletons, car elles peuvent entraîner des fuites de mémoire et persister d'une requête à l'autre.

3. Utiliser des constantes : utilisez des constantes au lieu de propriétés statiques lorsque cela est possible pour garantir l'immuabilité.

4. Instance de requête : lors de la résolution des singletons, transmettez un rappel pour vous assurer que l'instance de requête est résolue correctement.

5. Dépôt de configuration : utilisez la fonction d'assistance `config()` au lieu d'injecter le référentiel de configuration pour vous assurer qu'il est résolu correctement.

En suivant ces bonnes pratiques et en comprenant comment Octane gère les instances singleton, vous pouvez gérer et différencier efficacement les singletons qui persistent et ceux qui ne le sont pas dans votre application Laravel exécutée sur Octane[2][4][5].

Citations :
[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-and-handling-requests
[3] https://grantwinney.com/difference-between-singleton-scoped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/