Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Come faccio a distinguere tra singoli che persistono e quelli che non lo fanno in ottano


Come faccio a distinguere tra singoli che persistono e quelli che non lo fanno in ottano


Per distinguere tra singoli che persistono e quelli che non lo fanno nell'ottano di Laravel, devi capire come Octane gestisce le istanze singleton e come vengono risolti. Ecco i punti chiave da considerare:

singleton che persistono

1. Singleton nei fornitori di servizi: singoli che vengono risolti all'interno dei fornitori di servizi, in particolare nei metodi `Boot` o` Register`, persisteranno tra le richieste. Questo perché questi singoli vengono risolti durante il bootstrap dell'applicazione e sono archiviati nella cache del contenitore.

2. Servizi caldi: è possibile aggiungere singoli all'array `Warm` nel file di configurazione di ottano per assicurarsi che siano risolti e persistiti durante il bootstrap dell'applicazione. In questo modo, questi singoli saranno disponibili su tutte le richieste.

singoli che non persistono

1. Singleton nella gestione delle richieste: i singoli che vengono risolti durante la gestione delle richieste non persistono. Sono costruiti su ogni richiesta e non sono archiviati nella cache del contenitore.

2. Flush Services: se si dispone di un pacchetto che registra e risolve un singleton all'interno di un provider di servizi e si desidera scaricare tale istanza prima di ogni richiesta, è possibile aggiungerlo all'array `Flush` nel file di configurazione di ottano. Ciò garantisce che il singleton venga rimosso dal contenitore dopo aver gestito ogni richiesta.

Best practice

1. Usa i callback: quando si registrano singoli, utilizzare i callback anziché l'istanza effettiva per assicurarsi che vengano risolti una sola volta.

2. Evitare le proprietà statiche: evitare di usare proprietà statiche nei singoli in quanto possono portare a perdite di memoria e persistere tra le richieste.

3. Usa costanti: utilizzare le costanti anziché le proprietà statiche quando possibile per garantire l'immutabilità.

4. Istanza di richiesta: quando si risolvono i singoli, passare un callback per garantire che l'istanza di richiesta sia risolta correttamente.

5. Repository di configurazione: utilizzare la funzione `` `` `invece di iniettare il repository di configurazione per assicurarsi che sia risolto correttamente.

Seguendo queste migliori pratiche e comprendendo come Octane gestisce le istanze singleton, è possibile gestire e distinguere efficacemente tra singoli che persistono e quelli che non sono nella tua applicazione Laravel in esecuzione su ottano [2] [4] [5].

Citazioni:
[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrap-the-application-and-hendling-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/