KTV/app/Jobs/SendSqliteFileJob.php

63 lines
1.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Jobs;
use App\Models\Branch;
use App\Services\ApiClient;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\{InteractsWithQueue, SerializesModels};
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Log;
class SendSqliteFileJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected string $filename;
protected ?int $branchId;
public function __construct(string $filename, ?int $branchId = null)
{
$this->filename = $filename;
$this->branchId = $branchId;
}
public function handle(): void
{
$path = $this->filename;
if (!file_exists($path)) {
Log::error("❌ SQLite 檔案不存在: {$path}");
return;
}
$user = \App\Models\User::find(2);
$token = $user->api_plain_token;
$branches = $this->branchId
? Branch::where('id', $this->branchId)->get()
: Branch::where('enable', true)->cursor();
foreach ($branches as $branch) {
$client = new ApiClient($branch->external_ip , $token );
$response = $client->upload('/api/upload-sqlite', ['file' => $path]);
if ($response->successful()) {
Log::info("$branch->name 檔案 {$path} 傳送成功");
} else {
Log::error("$branch->name 傳送失敗HTTP {$response->status()}");
Log::error($response->body());
}
}
if (file_exists($path)) {
sleep(1); // 小延遲避免未立即釋放
if (@unlink($path)) {
Log::info("🧹 Temp SQLite file deleted: {$path}");
} else {
Log::error("❌ 無法刪除 SQLite 檔案:{$path}");
}
}
}
}