Để phân biệt giữa những người độc thân tồn tại và những người không có trong Laravel Octane, bạn cần hiểu cách octane xử lý các trường hợp singleton và cách chúng được giải quyết. Dưới đây là những điểm chính cần xem xét:
singletons tồn tại
1. Singletons trong các nhà cung cấp dịch vụ: Singletons được giải quyết bên trong các nhà cung cấp dịch vụ, cụ thể là trong các phương thức `boot` hoặc` đăng ký ', sẽ tồn tại qua các yêu cầu. Điều này là do những người độc thân này được giải quyết trong quá trình bootstrapping ứng dụng và được lưu trữ trong bộ đệm container.
2. Dịch vụ ấm áp: Bạn có thể thêm singletons vào mảng `` ấm 'trong tệp cấu hình octan để đảm bảo chúng được giải quyết và tồn tại trong quá trình bootstrapping ứng dụng. Bằng cách này, những người độc thân này sẽ có sẵn trên tất cả các yêu cầu.
singletons không tồn tại
1. Singletons trong xử lý yêu cầu: Singletons được giải quyết trong quá trình xử lý yêu cầu sẽ không tồn tại. Chúng được xây dựng trên mọi yêu cầu và không được lưu trữ trong bộ đệm container.
2 Điều này đảm bảo rằng singleton được xóa khỏi container sau khi xử lý từng yêu cầu.
Thực tiễn tốt nhất
1. Sử dụng các cuộc gọi lại: Khi đăng ký singletons, hãy sử dụng các cuộc gọi lại thay vì thể hiện thực tế để đảm bảo chúng chỉ được giải quyết một lần.
2. Tránh các thuộc tính tĩnh: Tránh sử dụng các thuộc tính tĩnh trong singletons của bạn vì chúng có thể dẫn đến rò rỉ bộ nhớ và tồn tại qua các yêu cầu.
3. Sử dụng hằng số: Sử dụng hằng số thay vì tính chất tĩnh khi có thể để đảm bảo tính bất biến.
4. Phiên bản yêu cầu: Khi giải quyết các singletons, hãy chuyển cuộc gọi lại để đảm bảo giải quyết yêu cầu được giải quyết chính xác.
5. Kho lưu trữ cấu hình: Sử dụng hàm `config ()` thay vì tiêm kho lưu trữ cấu hình để đảm bảo nó được giải quyết chính xác.
Bằng cách làm theo các thực tiễn tốt nhất này và hiểu cách octane xử lý các trường hợp singleton, bạn có thể quản lý và phân biệt hiệu quả giữa các singleton vẫn tồn tại và những người không có trong ứng dụng Laravel của bạn chạy trên Octane [2] [4] [5].
Trích dẫn:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-and-handling-requests
.
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/