Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Devam eden singleton'lar ile Oktan'da olmayanlar arasında nasıl ayrım yapabilirim?


Devam eden singleton'lar ile Oktan'da olmayanlar arasında nasıl ayrım yapabilirim?


Laravel Octane'da kalıcı olan ve olmayan tekilleri ayırt etmek için Octane'ın tekil örnekleri nasıl ele aldığını ve bunların nasıl çözümlendiğini anlamanız gerekir. Göz önünde bulundurulması gereken önemli noktalar şunlardır:

Devam Eden Tekillikler

1. Hizmet Sağlayıcılarda Tekil Tonlar: Hizmet sağlayıcıların içinde, özellikle "boot" veya "register" yöntemlerinde çözümlenen tekil birimler, istekler arasında varlığını sürdürür. Bunun nedeni, bu singleton'ların uygulama önyüklemesi sırasında çözülmesi ve konteyner önbelleğinde saklanmasıdır.

2. Sıcak Hizmetler: Uygulama önyüklemesi sırasında çözümlendiklerinden ve kalıcı olduklarından emin olmak için Octane yapılandırma dosyasındaki "sıcak" dizisine tekil öğeler ekleyebilirsiniz. Bu şekilde, bu singleton'lar tüm isteklerde kullanılabilir olacaktır.

Devam Etmeyen Tekillikler

1. İstek İşlemede Tekil İşlemler: İstek işleme sırasında çözümlenen tekil işlemler kalıcı olmayacaktır. Her istek üzerine oluşturulurlar ve konteyner önbelleğinde saklanmazlar.

2. Flush Hizmetleri: Bir hizmet sağlayıcı içinde bir singleton'u kaydeden ve çözümleyen bir paketiniz varsa ve bu örneği her istekten önce temizlemek istiyorsanız, bunu Octane yapılandırma dosyasındaki "flush" dizisine ekleyebilirsiniz. . Bu, her isteğin işlenmesinden sonra singleton'un kaptan çıkarılmasını sağlar.

En İyi Uygulamalar

1. Geri Aramaları Kullan: Tekilleri kaydederken, bunların yalnızca bir kez çözümlendiğinden emin olmak için gerçek örnek yerine geri aramaları kullanın.

2. Statik Özelliklerden Kaçının: Tekillerinizde statik özellikler kullanmaktan kaçının çünkü bunlar bellek sızıntılarına yol açabilir ve istekler arasında kalıcı olmaya neden olabilir.

3. Sabitleri Kullan: Değişmezliği sağlamak için mümkün olduğunda statik özellikler yerine sabitleri kullanın.

4. İstek Örneği: Tekilleri çözümlerken, istek örneğinin doğru şekilde çözümlendiğinden emin olmak için bir geri çağrı iletin.

5. Yapılandırma Havuzu: Doğru şekilde çözümlendiğinden emin olmak için yapılandırma havuzunu enjekte etmek yerine `config()' yardımcı işlevini kullanın.

Bu en iyi uygulamaları takip ederek ve Octane'ın tekil örnekleri nasıl işlediğini anlayarak, Octane[2] [4] [5] üzerinde çalışan Laravel uygulamanızda kalıcı tekilleri etkili bir şekilde yönetebilir ve kalıcı tekilleri ve kalıcı olmayanları ayırt edebilirsiniz.

Alıntılar:
[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/