Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • YardımLaravel
  • Çok büyük bir excel dosyasını import etmek istiyorum

Merhaba elimde çok büyük bir excel dosyası var. yaklaşık 300 bin satır ben dosyayı istek atınca response dönsün ama arka planda kayıt işlemi devam etsin istiyorum. Job sınıfı oluşturdum ve o şekilde denedim fakat istek attığımda job un bitmesini bekliyor ben bitmeden response dönsün ve arka planda import işlemi devam etsin istiyorum bunu nasıl yaparım. Kodum bu şekilde

` public function export(Request $request)
{
$file = $request->file('file');
$fileName = rand(0, 999) . '-' . time() . '.' . $file->extension();
$file->move('assets/files/', $fileName);

    ImportData::dispatch($fileName);

    return response()->json('ok');
}`

bu endpoint im

`protected $file;
public function __construct($file)
{
$this->file = $file;
}

/**
 * Execute the job.
 */
public function handle(): void
{
    $file = "assets/files/" . $this->file;
    SimpleExcelReader::create($file)
        ->getRows()
        ->each(function (array $row) {
            Year::create([
                "year" => $row["Tarih"]
            ]);
        });
}`

buda job sınıfım bana yardımcı olabilir misiniz burda ne yapmam lazım.

Olayı çözdüm. Bu tarz çok büyük işlemlerde iki tane job kulanmak en mantıklı yol. öncelikle endpoint de birinci job u çağırıyorum ve exceli okutuyorum sonrasında okunan verileri ikinci job a yolluyorum ve ikinci job da veritabanı işlemlerini sıraya alıyorum. böylelikle çok sağlıklı bir şekilde çalışıyor.

    omeruzer Peki bu performansıl bir yol mu yoksa daha iyisi yapılabilir mi ? Örnek kodunuzu rica etsem paylaşır mısınız ?