<?php
declare(strict_types=1);

/**
 * worker_check.php
 * 1. 10 dakikadan uzun süredir 'running' olan işleri kontrol eder.
 * 2. Varsa 'pending' yapar ve hata.txt içine 1 yazar.
 * 3. Yoksa hata.txt içine 0 yazar.
 */

require __DIR__ . '/db.php'; // $pdo değişkenini buradan alır

$JOB_TIMEOUT_MIN = 10;
$HATA_DOSYASI = __DIR__ . '/hata.txt';

try {
    // 1. Kontrol: 10 dakikadır bitmemiş 'running' iş var mı?
    $sql = "SELECT id FROM a3_jobs 
            WHERE status='running' 
            AND started_at < DATE_SUB(NOW(), INTERVAL $JOB_TIMEOUT_MIN MINUTE)";
    
    $stmt = $pdo->query($sql);
    $stuck_jobs = $stmt->fetchAll(PDO::FETCH_COLUMN);

    if (!empty($stuck_jobs)) {
        // Donan işleri PENDING yap
        $pdo->exec("UPDATE a3_jobs 
                    SET status='pending', started_at=NULL 
                    WHERE status='running' 
                    AND started_at < DATE_SUB(NOW(), INTERVAL $JOB_TIMEOUT_MIN MINUTE)");
        
        // Sinyal ver: Hata var (1)
        file_put_contents($HATA_DOSYASI, "1");
        echo "Donma tespit edildi ve isler pending yapildi. (hata.txt = 1)\n";
    } else {
        // Sinyal ver: Her şey yolunda (0)
        file_put_contents($HATA_DOSYASI, "0");
        echo "Donan is yok. (hata.txt = 0)\n";
    }

} catch (Exception $e) {
    // Veritabanı hatası vb. olursa yine hata sinyali verilebilir
    file_put_contents($HATA_DOSYASI, "1");
    echo "Hata olustu: " . $e->getMessage();
}