isoNumber = $isoNumber; $this->spoolNumber = $spoolNumber; // Set high priority queue $this->onQueue('high-priority-save-trigger'); } /** * Get the unique ID for the job. */ public function uniqueId(): string { return md5($this->isoNumber . '_' . $this->spoolNumber); } /** * Execute the job. */ public function handle(): void { $startTime = microtime(true); Log::info("=== SpoolStatusChangerJob STARTED ===", [ 'iso_number' => $this->isoNumber, 'spool_number' => $this->spoolNumber, 'timestamp' => now(), 'memory_start' => memory_get_usage(true) / 1024 / 1024 . ' MB' ]); try { if ($this->isoNumber !== null) { if ($this->spoolNumber !== null) { spoolStatusChanger($this->isoNumber, $this->spoolNumber); } else { spoolStatusChanger($this->isoNumber); } Log::info("Spool status updated successfully", [ 'iso_number' => $this->isoNumber, 'spool_number' => $this->spoolNumber ]); } else { Log::warning("SpoolStatusChangerJob called with null iso_number", [ 'spool_number' => $this->spoolNumber ]); } } catch (\Exception $e) { Log::error("SpoolStatusChangerJob failed", [ 'iso_number' => $this->isoNumber, 'spool_number' => $this->spoolNumber, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); throw $e; // Re-throw to trigger retry mechanism } $endTime = microtime(true); $executionTime = $endTime - $startTime; $memoryUsage = memory_get_peak_usage(true) / 1024 / 1024; Log::info("=== SpoolStatusChangerJob COMPLETED ===", [ 'iso_number' => $this->isoNumber, 'spool_number' => $this->spoolNumber, 'execution_time_seconds' => round($executionTime, 2), 'memory_peak_mb' => round($memoryUsage, 2), 'timestamp' => now() ]); } /** * Get the job's description for Telescope. */ public function getDescription(): string { return "Update spool status for ISO: {$this->isoNumber}" . ($this->spoolNumber ? ", Spool: {$this->spoolNumber}" : ""); } /** * Get the tags that should be assigned to the job. */ public function tags(): array { $tags = ["SpoolStatusChanger"]; if ($this->isoNumber) { $tags[] = "ISO:{$this->isoNumber}"; } if ($this->spoolNumber) { $tags[] = "Spool:{$this->spoolNumber}"; } return $tags; } }