Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: CSV İçe Aktarmalarını Ölçeklendirme: Laravel Görev Gruplama Ustası
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » CSV İçe Aktarmalarını Ölçeklendirme: Laravel Görev Gruplama Ustası

Yazılım

CSV İçe Aktarmalarını Ölçeklendirme: Laravel Görev Gruplama Ustası

teknomers
Son güncelleme: 22 Haziran 2026 07:25
teknomers
Paylaş
Paylaş

Sonsuz Döngü Hatası

Smart Tech Devs’de B2B SaaS platformlarında, müşteriler genellikle 100,000 satırdan oluşan müşteri kayıtları gibi büyük veri kümelerini yükleyerek sistemde yer almak isterler. Naif bir backend yaklaşımı, CSV’yi ayrıştırmak ve her bir satır için 100,000 ayrı arka plan işi başlatmak için basit bir foreach döngüsü kullanmaktır.

Bu durumda büyük bir operasyonel kör nokta oluşur. Örneğin, #45,000 işi hatalı bir e-posta adresi nedeniyle başarısız olursa, kullanıcıya nasıl bildirimde bulunursunuz? Yüklemenin genel ilerlemesini nasıl takip edersiniz? Tüm 100,000 iş tamamlandığında e-posta göndermeyi nasıl tetiklersiniz? Standart başlatma ile bu işler tamamen kopuk hale gelir. Büyük, uyumlu iş akışlarını yönetmek için Laravel Job Batching uygulamanız gerekir.

Çözüm: Bus::batch() Facade’ı

Laravel Job Batching, binlerce bağımsız işi tek bir, takip edilebilir varlık halinde gruplamanıza olanak tanır. Çatı, partiye benzersiz bir ID atar ve bu, frontend’in tam tamamlama yüzdesini sorgulamasına olanak tanır. Ayrıca, toplu işlemin genel başarı veya başarısızlığına göre mantık çalıştırmak için katı yaşam döngüsü kancaları (then, catch, finally) sağlar.

Adım 1: Batch Dispatcher’ı Mimarisi

CSV’yi bellek güvenli bir jeneratör kullanarak okuyoruz, verileri parçalara ayırıyoruz ve işlem işlerini birleştirilmiş bir partiye itiyoruz.


namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Jobs\ProcessCsvRow;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Bus;
use Throwable;

class ImportController extends Controller
{
    public function importCustomers(Request $request)
    {
        $tenantId = $request->user()->tenant_id;
        $jobs = [];

        // Varsayıma göre CSV'yi bellek güvenli parçalara ayırdık
        foreach ($request->input('csv_rows') as $row) {
            $jobs[] = new ProcessCsvRow($tenantId, $row);
        }

        // 1. İşleri tek bir takip edilebilir varlık olarak başlat
        $batch = Bus::batch($jobs)
            ->allowFailures() // KRİTİK: Bir satır başarısız olursa tüm partiyi iptal etme!
            ->then(function (\Illuminate\Bus\Batch $batch) use ($tenantId) {
                // 2. Yalnızca tüm işler %100 başarıyla tamamlandığında çalıştır
                \Log::info("Tenant {$tenantId} import completed flawlessly.");
            })
            ->catch(function (\Illuminate\Bus\Batch $batch, Throwable $e) {
                // 3. Bir iş başarısız olduğunda ilk kez çalıştırılır
                \Log::warning("Batch {$batch->id} encountered its first error.");
            })
            ->finally(function (\Illuminate\Bus\Batch $batch) use ($tenantId) {
                // 4. Tüm işler tamamlandığında, başarısızlıklar dahil
                app('notification.service')->sendImportReport(
                    $tenantId, 
                    $batch->processedJobs(), 
                    $batch->failedJobs
                );
            })
            ->name('Customer_Import_Tenant_'.$tenantId)
            ->dispatch();

        // 5. Gerçek zamanlı ilerleme çubuğu oluşturması için Batch ID'yi frontend'e döndür
        return response()->json(['batch_id' => $batch->id]);
    }
}

Adım 2: Frontend’de İlerleme Takibi

Laravel, parti durumunu veritabanında sakladığı için, React frontend’iniz temiz bir şekilde bir uç noktayı (örneğin, /api/batches/{id}) sorgulayabilir ve pürüzsüz bir 0-100% ilerleme çubuğu oluşturabilir. Bu, korkunç bir “kara kutu” arka plan işleminden premium bir kullanıcı deneyimine dönüşmeyi sağlar.

Mühendislik ROI

Job Batching’i kullanarak dağıtılmış yürütme üzerinde mutlak kontrol kazanırsınız. Sessiz kısmi hataları ortadan kaldırır, kullanıcılarınıza ilerleme takibi aracılığıyla tam şeffaflık sağlarsınız ve işleme sonrasında mantık (özet e-posta göndermek veya defter toplamlarını güncellemek gibi) yalnızca hesaplama süreci tamamen bittiğinde çalıştırılmasını garanti edersiniz.

Kaynak: Orijinal Makale

Contents
  • Sonsuz Döngü Hatası
  • Çözüm: Bus::batch() Facade’ı
    • Adım 1: Batch Dispatcher’ı Mimarisi
    • Adım 2: Frontend’de İlerleme Takibi
  • Mühendislik ROI
N+1 Sorgu Çözümü ile Sayfa Yükleme Süresini Nasıl Hızlandırdım (React + Laravel)
Laravel Sluggable Paketi: Nihayet Düşünceli Slug Oluşturma
Laravel’de Kod İçinde env() Kullanımının Sakıncaları
Laravel’de Çalışma Zamanı İstek İncelemesi (Koruyucular, Bağlamlar ve Tercihler)
Laravel Test Ortamı Kurulumu – DEV Community
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale CME Davası Üzerine Kısa Bir Bakış: Perpetual Swap Nedir?
Sonraki Makale Ethan Thornton Tüm İşleri Aynı Anda Yapmaya mı Çalışıyor?

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Ethan Thornton Tüm İşleri Aynı Anda Yapmaya mı Çalışıyor?
Genel
CME Davası Üzerine Kısa Bir Bakış: Perpetual Swap Nedir?
Finans
Laravel’de Hata Yönetimini Özel İstisnalar ile Kontrol Altına Alma
Yazılım
Eski Android telefonlarla Shahed insansız hava araçlarını tespit etme
Donanım
Laravel’de Site Haritası Oluşturma: Kapsamlı Bir Rehber
Yazılım
Razer Naga ile hastaları tedavi eden telehealth doktoru
Donanım
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?