Üç haftalık iç üretim doğrulamasının ardından, scabarcas/laravel-permissions-redis bugünden itibaren ilk stabil 4.x sürümünü yayımladı. Kod tabanı v4.0.0-beta.2 ile aynıdır. Değişiklik yalnızca taahhüt olmuştur.
Neden “hiçbir kod değişikliği yok” esas bir nokta
Neden “hiçbir kod değişikliği yok” esas bir nokta
Stabil, “özellik ekledik” anlamına gelmez. Stabil, “bunu değiştirmeyi bırakıyoruz” demektir. Üç hafta boyunca betayı kendi üretim iş yüklerimde çalıştırdım, bir şey bulmayı bekliyordum — bir kenar durumu, yarış durumu veya kaçırılan bir geçersizlik. Hiçbir şey ortaya çıkmadı. Redis sözleşme test seti yeşil kaldı, bellek içi test sahte verisi gerçek Redis uygulamasıyla eşleşti ve resolver, kuyruk işleyicileri, Octane yaşam döngüleri ve çoklu kullanıcı modeli kurulumları arasında tutarlı bir şekilde davrandı.
Bir beta yeterince uzun süre boyunca yeni hata raporları üretmeyi durdurduğunda, onu beta olarak etiketlemeyi bırakmanın doğru olduğunu düşünüyorum. Üç hafta yeterli geldi.
V3 veya daha eski sürümden geliyorsanız, ne elde edersiniz
V3 veya daha eski sürümden geliyorsanız, ne elde edersiniz
4.x serisi Mart ayından bu yana özellikler topladı. Betayı takip etmediyseniz, kısa liste şu şekildedir:
- Redis’te izin grubu meta verisi — grup adları önbellek katmanında hayatta kalır, böylece
PermissionResolver::getAllPermissions()veritabanına geri dönmeden zenginleştirilmiş DTO’lar döner. - Çoklu kullanıcı modeli desteği —
user_modelyapılandırması bir dizi kabul eder,Gate::beforeher yapılandırılmış tür üzerinde yinelemeli olarak çalışır. - Kuyruk destekli ısıtma —
WarmUserCacheJobve ısıtma komutları için--queuebayrağı. Yük altında senkronize toplu ısıtma artık yok. - Her Blade direktifinde Guard parametresi —
@role('admin', 'api'),@permission('users.read', 'api'), tüm altı direktif. - İn-memori çözümleyici önbelleklerinde LRU tahliyesi + ısıtma bekleme süresi. Uzun süre çalışan işçiler artık sınırsız şekilde büyümeyecek.
- Atomik izin grupları + Redis SCAN/HSET düzeltmeleri — her değişiklik, tutarlı geri alma anlamsalına sahip MULTI/EXEC üzerinden geçer.
- Spatie’den göç komutu —
php artisan permissions-redis:migrate-from-spatiemevcutmodel_has_roles,model_has_permissionsverole_has_permissionstablolarınızdan okur ve eşdeğer Redis durumunu bir seferde ısıtır.
Tam denetim ve düzeltme listesi CHANGELOG‘da mevcuttur.
Benchmark özeti
Benchmark özeti
Yeni okuyucular için — farklılaştırıcı aynı kalıyor:
| İş Yükü | spatie p50 | redis p50 | Hızlanma |
|---|---|---|---|
| 1 yetkilendirme ağırlıklı istek | 13.76 ms | 1.26 ms | 10.94x |
| 10 yineleme | 138.87 ms | 13.01 ms | 10.68x |
| 50 yineleme | 696.73 ms | 63.79 ms | 10.92x |
Metodoloji: Her senaryo için 5 ısınma koşusu + 30 ölçüm koşusu, koşular arasında GC sıfırlaması, predis istemcisi, SQLite + yerel Redis uygulaması Apple Silicon üzerinde. benchmark repo’dan bir Docker komutuyla yeniden üretilebilir.
10x, daha akıllı bir algoritmadan değil — daha az iş yapmaktan kaynaklanıyor. Spatie, her istekte Eloquent aracılığıyla kullanıcı-roller-izinler zincirini besliyor (her yetkilendirme ağırlıklı uç nokta için 4 DB sorgusu). Bu paket bu zinciri Redis SET’lerinde tutar ve üyeliği SISMEMBER (O(1)) ile kontrol eder. Geri kalan DB sorgusu, yalnızca users sorgusudur.
Buradan itibaren Semver taahhüdü
Buradan itibaren Semver taahhüdü
Kırılma değişiklikleri yalnızca v5.0.0 sürümüyle yayımlanacaktır. 4.x serisi şu özellikleri alır:
- Kesintisiz özellikler
- Hata düzeltmeleri
- Belgeler geliştirmeleri
Sizin composer.json kısıtlamanız ^4.0 güvenle taahhüt edilebilir. Test setiniz v4.0.0 sürümünde geçiyorsa, her 4.x sürümünde geçmeye devam edecektir.
Bu paket ne zaman uygundur
Bu paket ne zaman uygundur
Bu, her Laravel uygulaması için bir Spatie yerine geçmez. Bu durumu kullanın:
- Her istekte birçok yetkilendirme kontrolü yapıyorsanız (
hasPermissionTo,hasRole, Blade direktifleri,Gate::allows) - Redis zaten bir üretim bağımlılığıysa (oturumlar, kuyruklar, önbellek)
- Spatie’nin ilişki beslenmesinden kaynaklanan isteklere dair 4 DB sorgusu izlemelerinizde görünüyorsa
- Önbellek geçerliliğinde gecikmeli doğrulama penceresini kabullenebiliyorsanız (olaylar, ısınmayı milisaniye içinde tetikler, ancak kesinlikle senkronize değildir)
Spatie, yetkilendirmenin sıcak yol olmadığı %95’lik uygulamaların doğru varsayılanıdır. Gecikme matematiğiniz gerçekten sayılarınızı değiştirmedikçe geçmeyin.
Kurulum
Kurulum
composer require scabarcas/laravel-permissions-redis:^4.0
Kurulum adımlarını içeren tam README · Spatie’den tek komutla geçiş yapın · Benchmark metodolojisi
Kaynak: Orijinal Makale


