Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment faire la différence entre les singletons qui persistent et ceux qui ne le font pas en octane


Comment faire la différence entre les singletons qui persistent et ceux qui ne le font pas en octane


Pour différencier les singletons qui persistent et ceux qui ne le font pas dans Laravel Octane, vous devez comprendre comment Octane gère les instances de 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 qui sont résolus à l'intérieur des fournisseurs de services, en particulier dans les méthodes «boot» ou «registre», persisteront à tous les demandes. En effet, ces singletons sont résolus lors de l'amorçage d'application et sont stockés dans le cache de conteneur.

2. Services chaleureux: vous pouvez ajouter des singletons au tableau «chaud» dans le fichier de configuration d'octane pour vous assurer qu'ils sont résolus et persistants pendant le bootstrap d'application. De cette façon, ces singletons seront disponibles dans toutes les demandes.

Singletons qui ne persistent pas

1. Les singletons dans la manipulation des demandes: les singletons qui sont résolus pendant la manipulation des demandes ne persisteront pas. Ils sont construits à chaque demande et ne sont pas stockés dans le cache de conteneur.

2. Services de rinçage: si vous avez un package qui enregistre et résout un singleton dans un fournisseur de services et que vous souhaitez vider cette instance avant chaque demande, vous pouvez l'ajouter au tableau `flush` dans le fichier de configuration d'octane. Cela garantit que le singleton est supprimé du conteneur après avoir géré chaque demande.

meilleures pratiques

1. Utilisez des rappels: lors de l'enregistrement des singletons, utilisez des rappels au lieu de l'instance réelle pour vous assurer qu'elles ne sont résolues 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 à travers les demandes.

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

4. Instance de demande: lors de la résolution des singletons, passez un rappel pour vous assurer que l'instance de demande est résolu correctement.

5. Référentiel de configuration: utilisez la fonction `Config ()` Helper au lieu d'injecter le référentiel de configuration pour vous assurer qu'il est résolu correctement.

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

Citations:
[1] https://laracast.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-transentsient/
[4] https://betterprogramming.pub/the-downsides-ofcoding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/