OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

cve-refresh.php

2 KB
<?php
// Cron-Script: CVE-Cache aktualisieren
//
// Dieses Script sollte regelmaessig per Cron ausgefuehrt werden (z.B. alle 6 Stunden):
//   0 */6 * * *  /usr/bin/php /pfad/zu/bin/cve-refresh.php >> /pfad/zu/storage/logs/cve-refresh.log 2>&1

require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../bootstrap.php';

use OpenNIT\Core\Database;
use OpenNIT\Content\CveManager;

$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
$dotenv->load();

$dbConfig = require __DIR__ . '/../config/database.php';

$db      = new Database($dbConfig);
$manager = new CveManager($db);

// Cron-Lauf tracken
$runId = null;
try {
    $runId = (int)$db->insert('cronjob_runs', [
        'job_name'   => 'cve_refresh',
        'started_at' => date('Y-m-d H:i:s'),
        'status'     => 'running',
    ]);
} catch (\Throwable) {}

echo '[' . date('Y-m-d H:i:s') . '] Starte CVE-Cache-Aktualisierung…' . PHP_EOL;

try {
    $count = $manager->refreshCache();
    $msg   = "CVE-Cache aktualisiert: {$count} Einträge verarbeitet.";

    echo '[' . date('Y-m-d H:i:s') . '] ' . $msg . PHP_EOL;

    if ($runId) {
        $db->update('cronjob_runs', [
            'finished_at'     => date('Y-m-d H:i:s'),
            'status'          => 'success',
            'message'         => $msg,
            'items_processed' => $count,
        ], 'id = ?', [$runId]);
    }
    exit(0);
} catch (\Throwable $e) {
    $msg = 'Exception: ' . $e->getMessage();
    echo '[' . date('Y-m-d H:i:s') . '] FEHLER: ' . $msg . PHP_EOL;

    if ($runId) {
        try {
            $db->update('cronjob_runs', [
                'finished_at' => date('Y-m-d H:i:s'),
                'status'      => 'error',
                'message'     => $msg,
            ], 'id = ?', [$runId]);
        } catch (\Throwable) {}
    }
    exit(1);
}