Untuk membedakan antara singleton yang bertahan dan yang tidak di Laravel Octane, Anda perlu memahami bagaimana Octane menangani instance singleton dan bagaimana penyelesaiannya. Berikut adalah poin-poin penting yang perlu dipertimbangkan:
Lajang yang Bertahan
1. Lajang di Penyedia Layanan: Lajang yang diselesaikan di dalam penyedia layanan, khususnya dalam metode `boot` atau `register`, akan tetap ada di seluruh permintaan. Hal ini karena singleton ini diselesaikan selama bootstrap aplikasi dan disimpan dalam cache kontainer.
2. Layanan Hangat: Anda dapat menambahkan singleton ke array `warm` di file konfigurasi Octane untuk memastikan singleton terselesaikan dan bertahan selama bootstrapping aplikasi. Dengan cara ini, para lajang ini akan tersedia di semua permintaan.
Lajang yang Tidak Bertahan
1. Lajang dalam Penanganan Permintaan: Lajang yang diselesaikan selama penanganan permintaan tidak akan bertahan. Mereka dibuat berdasarkan setiap permintaan dan tidak disimpan dalam cache kontainer.
2. Flush Services: Jika Anda memiliki paket yang mendaftarkan dan menyelesaikan singleton di dalam penyedia layanan dan Anda ingin melakukan flush instance tersebut sebelum setiap permintaan, Anda dapat menambahkannya ke array `flush` di file konfigurasi Octane . Hal ini memastikan bahwa singleton dihapus dari kontainer setelah menangani setiap permintaan.
Praktik Terbaik
1. Gunakan Callback: Saat mendaftarkan singleton, gunakan callback alih-alih instance sebenarnya untuk memastikan callback tersebut diselesaikan hanya sekali.
2. Hindari Properti Statis: Hindari penggunaan properti statis pada lajang Anda karena dapat menyebabkan kebocoran memori dan tetap ada di seluruh permintaan.
3. Gunakan Konstanta: Gunakan konstanta alih-alih properti statis jika memungkinkan untuk memastikan kekekalan.
4. Instans Permintaan: Saat menyelesaikan masalah lajang, teruskan panggilan balik untuk memastikan instans permintaan diselesaikan dengan benar.
5. Repositori Konfigurasi: Gunakan fungsi pembantu `config()` alih-alih memasukkan repositori konfigurasi untuk memastikannya diselesaikan dengan benar.
Dengan mengikuti praktik terbaik ini dan memahami bagaimana Octane menangani instance tunggal, Anda dapat secara efektif mengelola dan membedakan antara singleton yang bertahan dan yang tidak dalam aplikasi Laravel Anda yang berjalan pada Octane[2][4][5].
Kutipan:[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/