Kaan Tanış, Mersin’de freelance web tasarım, yazılım geliştirme ve mobil uygulama üreten full-stack geliştirici ve UI tasarımcısıdır.

Laravel SerializesModels Özelliği: Performans ve Verimlilik İçin Optimizasyon

Laravel SerializesModels Özelliği: Performans ve Verimlilik İçin Optimizasyon

Kuyruğa (queue) bir Eloquent modeli gönderdiğinizde Laravel arkada ne yapıyor biliyor musunuz? Modelin tamamını, ilişkileriyle birlikte serileştirip kuyruğa gömüyor. Model büyükse kuyruk şişiyor, bellek doluyor, işlem yavaşlıyor.

SerializesModels bunu çözüyor. Modelin tamamı yerine sadece ID'sini taşıyor, iş çalışma zamanı gelince modeli veritabanından taze şekilde çekiyor.

Kullanımı

namespace App\Jobs;

use Illuminate\Queue\SerializesModels;

class ProcessOrder
{
    use SerializesModels;

    public function __construct(public $order) {}

    public function handle()
    {
        // Model burada yeniden yüklenir
        $order = $this->order;

        // Model üzerinde işlem yapabilirsiniz
        $order->update(['status' => 'completed']);
    }
}

Tek satır: use SerializesModels; Hepsi bu.

Ne kazanıyorsunuz

Kuyrukta taşınan veri küçülüyor. Özellikle ilişkisi bol modellerde fark ciddi. İşlem başladığında model veritabanından güncel haliyle çekildiği için, kuyrukta beklerken değişmiş verilerle çalışma riski de ortadan kalkıyor.

Dikkat edilecek nokta

Model, iş çalışana kadar silinmişse hata alırsınız. Kuyrukta uzun bekleyen işlerde bunu hesaba katın. Ayrıca modelin yeniden yüklenmesi için veritabanının erişilebilir olması şart, o an DB ayaktaysa sorun yok.

Kısacası: kuyrukta model taşıyorsanız bu trait'i ekleyin. Maliyeti sıfır, faydası bariz.

İlgili Yazılar

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanacaktır. Bildirim almak isterseniz e-posta adresinizi girebilirsiniz.