fix price force refresh 2

This commit is contained in:
2026-06-14 12:33:29 +03:30
parent 1abddfbab8
commit db0cc5f1a6
8 changed files with 246 additions and 120 deletions
@@ -0,0 +1,36 @@
<?php
namespace App\Console\Commands;
use App\Services\LivePriceTickService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
/**
* حلقه بی‌نهایت — برای supervisor: php artisan prices:tick-daemon
*/
class PriceTickDaemonCommand extends Command
{
protected $signature = 'prices:tick-daemon {--interval=10}';
protected $description = 'Continuously refresh montzar/zaarbox/products every N seconds (supervisor)';
public function handle(LivePriceTickService $tickService): int
{
$interval = max(1, (int) $this->option('interval'));
$this->info("Price tick daemon started (every {$interval}s). Ctrl+C to stop.");
while (true) {
try {
$tickService->tick();
} catch (\Throwable $e) {
Log::error('prices:tick-daemon failed', [
'message' => $e->getMessage(),
]);
}
sleep($interval);
}
}
}
@@ -0,0 +1,32 @@
<?php
namespace App\Console\Commands;
use App\Services\LivePriceTickService;
use Illuminate\Console\Command;
/**
* هر دقیقه ۶ بار prices:tick — برای schedule:run (فاصله ۱۰ ثانیه).
*/
class PriceTickLoopCommand extends Command
{
protected $signature = 'prices:tick-loop {--iterations=6} {--interval=10}';
protected $description = 'Run prices:tick several times per minute (default: 6× every 10s)';
public function handle(LivePriceTickService $tickService): int
{
$iterations = max(1, (int) $this->option('iterations'));
$interval = max(1, (int) $this->option('interval'));
for ($i = 0; $i < $iterations; $i++) {
$tickService->tick();
if ($i < $iterations - 1) {
sleep($interval);
}
}
return self::SUCCESS;
}
}