FriendsOfREDAXO / cache_warmup

Generiert den Cache vorab, so dass die Website bereits beim Erstaufruf performant läuft
MIT License
41 stars 2 forks source link

Fehler bei Verwendung von exit(); in Template #80

Closed frood closed 6 years ago

frood commented 6 years ago

Moin, Cache-Warmup bricht mit Fehlercode "RAM exceeded" ab, wenn in einem Template exit(); verwendet wird. Gelöst habe ich das jetzt, indem ich das exit(); für warmup ausschließe:

if($_GET['page']!='cache_warmup/generator') {exit;}

Funktioniert .... vielleicht kann man Cache-Warmup dazu bringen, den exit-Befehl zu ignorieren ....

Gruss, Marc

staabm commented 6 years ago

Das klingt sehr merkwürdig. Ist das mit der simple demo reproduzierbar? Ist das problem abhängig von verwendeten medien oder effekten?

schuer commented 6 years ago

Kurze Anmerkung zum RAM exceeded: Das kommt grundsätzlich im Fehlerfall, denn es gibt kein detailierteres Fehlermanagement an der Stelle. Wenn ein Bild nicht generiert werden kann, können wir nur davon ausgehen, dass der Arbeitsspeicher nicht ausreicht. In allen anderen Fällen wird ein Fehlerbild statt des eigentlichen Bilds generiert, ohne dass Cache-Warmup davon etwas mitbekommt.

Was dein Exit betrifft: Setzt du das nach einem Redirect oder sowas? Oder welche Absicht hat das Exit in deinem Code? Wäre cool, wenn du die entsprechende Codestelle hier mal reinpasten könntest, damit wir verstehen, wo es klemmt.

frood commented 6 years ago

Der Exit-Befehl ist bei mir abhängig von einem bestimmten Sessionwert. Er wird aufgerufen, wenn es diesen Wert nicht gibt:

if(!isset($_SESSION['wert'])){exit;}

Per default existiert dieser Wert nicht (der Hintergrund ist der, dass diese Seite nur einen Hinweis und einen Link ausspuckt und dann abbricht, wenn der Besucher zuvor nicht eine andere Seite besucht hat, auf der dieser Sessionwert gesetzt wurde).

Das Problem lässt sich mit der demo_base leicht nachbilden über das Standard-Template ...

So funktioniert der warmup (Bedingung für Exit nicht erfüllt):

<?php define('SITE_TYPE', 'col1'); if(1==2){ echo 'aus is!'; exit;} ?> REX_TEMPLATE[3]

... und so funktioniert der warmup nicht (Bedingung für Exit erfüllt):

<?php define('SITE_TYPE', 'col1'); if(1==1){ echo 'aus is!'; exit;} ?> REX_TEMPLATE[3]

schuer commented 6 years ago

@frood Ich kann dein Problem nachvollziehen und denke, dass Cache-Warmup wirklich gezielter auf Fehler eingehen sollte. Habe ein neues Issue dafür aufgemacht, siehe #81.

Bis zur fertigen Umsetzung solltest du wohl wirklich den Workaround einsetzen, den du beschrieben hast.

schuer commented 6 years ago

Wird im Zuge von #81 behoben werden.