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

Canonical: https://kaantanis.com/bloglar/laravel/laravel-serializesmodels-ozelligi-performans-ve-verimlilik-icin-optimizasyon

Yayın tarihi: 2024-11-16

Etiketler: Laravel

Yazar: Kaan Tanış

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ıyorsunuzKuyrukta 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 noktaModel, 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.
