*/ use HasFactory; public const ?string UPDATED_AT = null; public const FEED_PORTAL = 'portal'; public const FEED_CATEGORY = 'category'; public const FEED_NEWSROOM = 'newsroom'; protected $fillable = [ 'feed', 'feed_key', 'portal', 'language', 'reader', 'subscribers', 'user_agent', ]; /** * Schreibt einen Abruf nach der Antwort (defer) — fehlertolerant, weil * die Messung den Abruf begleitet und ihn nie scheitern lassen darf. */ public static function recordDeferred(string $feed, ?string $feedKey, string $portal, string $language, ?string $userAgent): void { try { $userAgent = trim((string) $userAgent); self::query()->create([ 'feed' => $feed, 'feed_key' => $feedKey, 'portal' => $portal, 'language' => $language, 'reader' => FeedReaderIdentifier::identify($userAgent), 'subscribers' => FeedReaderIdentifier::subscribers($userAgent), 'user_agent' => mb_substr($userAgent, 0, 255), ]); } catch (\Throwable $e) { report($e); } } }