Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Come faccio a distinguere tra i singleton che persistono e quelli che non lo fanno in Octane


Come faccio a distinguere tra i singleton che persistono e quelli che non lo fanno in Octane


Per distinguere tra i singleton che persistono e quelli che non lo fanno in Laravel Octane, è necessario capire come Octane gestisce le istanze singleton e come vengono risolte. Ecco i punti chiave da considerare:

Single che persistono

1. Singleton nei fornitori di servizi: i singleton risolti all'interno dei fornitori di servizi, in particolare nei metodi "boot" o "register", persisteranno tra le richieste. Questo perché questi singleton vengono risolti durante il bootstrap dell'applicazione e vengono archiviati nella cache del contenitore.

2. Servizi Warm: puoi aggiungere singleton all'array `warm` nel file di configurazione di Octane per assicurarti che vengano risolti e mantenuti durante il bootstrap dell'applicazione. In questo modo, questi singleton saranno disponibili per tutte le richieste.

Single che non persistono

1. Singleton nella gestione delle richieste: i singleton risolti durante la gestione delle richieste non persisteranno. Vengono costruiti su ogni richiesta e non vengono archiviati nella cache del contenitore.

2. Flush Services: se hai un pacchetto che registra e risolve un singleton all'interno di un fornitore di servizi e desideri svuotare quell'istanza prima di ogni richiesta, puoi aggiungerlo all'array `flush` nel file di configurazione di Octane . Ciò garantisce che il singleton venga rimosso dal contenitore dopo aver gestito ogni richiesta.

Migliori pratiche

1. Utilizza callback: quando registri i singleton, utilizza i callback invece dell'istanza effettiva per assicurarti che vengano risolti una sola volta.

2. Evita proprietà statiche: evita di utilizzare proprietà statiche nei tuoi singleton poiché possono causare perdite di memoria e persistere tra le richieste.

3. Utilizza costanti: utilizza costanti anziché proprietà statiche quando possibile per garantire l'immutabilità.

4. Istanza di richiesta: durante la risoluzione dei singleton, passare un callback per garantire che l'istanza della richiesta venga risolta correttamente.

5. Repository di configurazione: utilizzare la funzione di supporto `config()` invece di inserire il repository di configurazione per assicurarsi che venga risolto correttamente.

Seguendo queste migliori pratiche e comprendendo come Octane gestisce le istanze singleton, puoi gestire e differenziare in modo efficace tra i singleton che persistono e quelli che non lo fanno nella tua applicazione Laravel in esecuzione su Octane[2][4][5].

Citazioni:
[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/