fileName = $fileName; $this->jobId = $jobId; } public function handle() { $totalRows = DB::table('conf_server_license')->count(); // จำนวนข้อมูลทั้งหมด $processedRows = 0; // ใช้ chunk เพื่อแบ่งการประมวลผล DB::table('conf_server_license')->chunk(100, function ($rows) use (&$processedRows, $totalRows) { // ประมวลผลข้อมูลใน chunk Excel::store(new ServerLicenseExport($rows), $this->fileName, 'local'); // เพิ่มจำนวนข้อมูลที่ถูกประมวลผล $processedRows += count($rows); // คำนวณเปอร์เซ็นต์ความคืบหน้า $progress = ($processedRows / $totalRows) * 100; // อัปเดต progress ลงใน cache แทนฐานข้อมูล Cache::put("export_progress_{$this->jobId}", $progress); }); // ลบค่า progress เมื่อประมวลผลเสร็จสิ้น Cache::forget("export_progress_{$this->jobId}"); } }