Verbesserte Anzeige von RSS Feed Durchläufen

  • Affected App
    WoltLab Suite Forum

    Enthält ein RSS Feed keine neuen Beiträge, wird der Wert 'lastRun' für den jeweiligen Feed nicht mit dem aktuellen Timestamp überschrieben, da die Schleife an dieser Stelle verlassen wird:

    PHP: RSSFeedReaderCronjob.class.php
    if (empty($data)) continue;

    Der folgende Code wird dadurch nicht mehr ausgeführt:

    PHP: RSSFeedReaderCronjob.class.php
    // update last run
    $editor = new RssFeedEditor($feed);
    $editor->update([
        'lastRun' => TIME_NOW,
        'errorMessage' => $errorMessage
    ]);

    Das weitere Abrufen des Feeds wird dadurch zwar nicht verhindert, da der Zeitpunkt 'lastRun' + 'cycleTime' immer weit genug in der Vergangenheit liegt, aber die Logik der 'cycleTime' ist damit nicht länger ganz korrekt, da Feeds, die bspw. nur alle 30 Minuten abgerufen werden sollen, bei jedem Durchlauf des Cronjobs (alle 10 Minuten) abgerufen werden, da 'lastRun' nie ordnungsgemäß erhöht wird. Im folgenden Beispiel würde sogar ein Feed, der alle 7 Tage abgerufen werden soll, bei jedem Durchlauf des Cronjobs abgerufen werden.


    Da es nicht direkt zu Problemen kommt und sich die Logik "von selbst korrigiert", wenn ein neuer Beitrag/neue Beiträge gefunden wurden, habe ich dieses Thema im Bereich für Ideen und Vorschläge erstellt, anstatt es als Fehler zu melden, welcher dringend korrigiert werden muss. Das einzige mir einfallende Problem wäre, wenn jemand die Anfragen an dessen Feed limitiert und man durch diesen Fehler in ein Rate-Limit gerät, warum auch immer jemand so etwas machen sollte.


    Viel problematischer und ausschlaggebend für diesen Vorschlag finde ich, dass die Übersicht im ACP wie folgt aussieht, obwohl der Cronjob regelmäßig ausgeführt wird:



    Meiner Meinung nach ist der Term "Last Checked" bzw. auch "Letzter Durchlauf" an dieser Stelle irreführend, da man vermuten würde, dass dort der Zeitpunkt gelistet wird, an dem der Feed zuletzt auf neue Beiträge überprüft wurde. So erhält man leicht den Eindruck, dass ein Feed womöglich nicht mehr überprüft wird/wurde (bis es dann einen neuen Beitrag gab).


    Da ich mir vorstellen kann, dass der Zeitpunkt des letzten Updates (abgerufenen Beitrags) für den ein oder anderen Benutzer durchaus relevant sein könnte, schlage ich vor, beide Zeitpunkte, also sowohl den (tatsächlichen) letzten Durchlauf (der sich dann der Einstellung entsprechend alle 10 Minuten bis 7 Tage ändern sollte und von dem die nächste Überprüfung abhängt), als auch die Information über das letzte Update (den letzten abgerufenen Beitrag) separat zu speichern und im ACP anzuzeigen.


    Aufgefallen ist mir das in der Version 5.3, ich kann also nicht wissen, ob sich hier mit der Version 5.4 etwas verändert hat.

    ~ DMedia

    Edited once, last by DMedia ().

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!