From 1001bdd9552e23b2c4bcee8ceda636c7e2c1c694 Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Tue, 17 Jan 2023 16:07:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=20=E6=89=A3=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Kernel.php | 4 +- ...stJob.php => DispatchHostCostQueueJob.php} | 15 ++----- app/Jobs/Host/HostJob.php | 2 - app/Jobs/Host/RealHostCostJob.php | 40 +++++++++++++++++++ 4 files changed, 45 insertions(+), 16 deletions(-) rename app/Jobs/Host/{HostCostJob.php => DispatchHostCostQueueJob.php} (64%) create mode 100644 app/Jobs/Host/RealHostCostJob.php diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 4eea082..a820811 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -3,7 +3,7 @@ namespace App\Console; use App\Jobs\Host\DeleteHostJob; -use App\Jobs\Host\HostCostJob; +use App\Jobs\Host\DispatchHostCostQueueJob; use App\Jobs\Host\ScanAllHostsJob; use App\Jobs\Module\FetchModuleJob; use App\Jobs\Module\SendModuleEarningsJob; @@ -31,7 +31,7 @@ protected function schedule(Schedule $schedule): void $schedule->command('sanctum:prune-expired --hours=24')->daily(); // 扣费 - $schedule->job(new HostCostJob(now()->minute))->everyMinute()->withoutOverlapping()->onOneServer(); + $schedule->job(new DispatchHostCostQueueJob(now()->minute))->everyMinute()->withoutOverlapping()->onOneServer(); // 获取模块暴露的信息(服务器等) $schedule->job(new FetchModuleJob())->withoutOverlapping()->everyMinute(); diff --git a/app/Jobs/Host/HostCostJob.php b/app/Jobs/Host/DispatchHostCostQueueJob.php similarity index 64% rename from app/Jobs/Host/HostCostJob.php rename to app/Jobs/Host/DispatchHostCostQueueJob.php index 5ba92b2..36c7d5d 100644 --- a/app/Jobs/Host/HostCostJob.php +++ b/app/Jobs/Host/DispatchHostCostQueueJob.php @@ -2,16 +2,15 @@ namespace App\Jobs\Host; -use App\Helpers\Lock; use App\Models\Host; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; -class HostCostJob implements ShouldQueue +class DispatchHostCostQueueJob implements ShouldQueue { - use InteractsWithQueue, Queueable, SerializesModels, Lock; + use InteractsWithQueue, Queueable, SerializesModels; public int $minute; @@ -33,24 +32,16 @@ public function __construct($minute) */ public function handle(): void { - // chunk hosts and load user $host = new Host(); - // if env not local, then use minute_at if (app()->environment() != 'local') { $host = $host->where('minute_at', $this->minute); } $host->whereIn('status', ['running', 'stopped'])->with('user')->chunk(500, function ($hosts) { foreach ($hosts as $host) { - $host->cost(); + dispatch(new RealHostCostJob($host, $host->getPrice())); } }); - - // HostJob::whereIn('status', ['running', 'stopped'])->with('user')->chunk(1000, function ($hosts) { - // foreach ($hosts as $host) { - // $host->cost(); - // } - // }); } } diff --git a/app/Jobs/Host/HostJob.php b/app/Jobs/Host/HostJob.php index 4aa51e0..8d4e355 100644 --- a/app/Jobs/Host/HostJob.php +++ b/app/Jobs/Host/HostJob.php @@ -37,8 +37,6 @@ public function __construct(HostModel $host, $type = 'post') */ public function handle(): void { - // - $host = $this->host; $host->load(['module']); diff --git a/app/Jobs/Host/RealHostCostJob.php b/app/Jobs/Host/RealHostCostJob.php new file mode 100644 index 0000000..ed535eb --- /dev/null +++ b/app/Jobs/Host/RealHostCostJob.php @@ -0,0 +1,40 @@ +host = $host; + $this->price = $price; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle(): void + { + $this->host->cost($this->price); + } +}