php Resultat erst nach clear cache
am 19.03.2018 - 10:47 Uhr in
Ich weiß nicht, wo ich dieses Problem anbringen soll, aber evt. handelt es sich ja um eine Anfängerfrage.
Auf meinem lokalen Server habe ich mit dem php-Modul ein Skript auf einer Seite eingebettet, das etwa wie folgt ausschaut:
$pdo = new PDO('mysql:host=127.0.0.1;dbname= datenbank', 'user', 'password');
$sql = "SELECT * FROM tabelle WHERE tag = '$datum' LIMIT 1";
foreach ($pdo->query($sql) as $row) {
if ($row['checked'] == $datum AND $row['tag'] == $datum)
{
echo "Das Datum stimmt überein";
}
}
Das hat bisher auch wunderbar funktioniert. Nun habe ich die Seite online gestellt - hier kommen die Resultate erst dann zurück, wenn ich den Cache leere, was natürlich keinen Sinn macht - die Tabelle soll ja laufend verändert werden. Lade ich das Skript direkt in der URL sind die Resultate richtig. Es hängt also mit Drupal 8 zusammen. Hat mir da jemand einen Tipp? Würde mich freuen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Es kommt drauf an, in welchem
am 19.03.2018 - 16:08 Uhr
Es kommt drauf an, in welchem Kontext du dein Script eingebundeten hast. Preprocess Funktion, ein eigener Controller, ein Block? Je nachdem was es ist, kann das Caching spezifiziert werden. Wenn dies nicht geschieht (wie in deinem Fall) werden alle Seitenbestandteile gecached und du siehst veraltete Abfrageergebnisse.
Abgesehen davon würde ich dir empfehlen eigene SQL-Abfragen nur über die Drupal API laufen zu lassen, statt diese per PDO zu implementieren. (Das hat aber nicht direkt mit deinem Problem zu tun).
Ich habe das Skript auf einer
am 19.03.2018 - 17:19 Uhr
Ich habe das Skript auf einer ganz normalen einfachen Seite eingebunden (Textformat: php-Code: include '...';). Für Preprocess Funktion und Controller fehlt mir noch das Knowhow.
Gibt es Möglichkeiten, das Problem via Block zu beheben?
Bin leider noch nicht an dem Punkt, dass ich ein Modul basteln kann... :-(
Danke schon mal.
Um ein eigenes Modul wirst du
am 19.03.2018 - 17:59 Uhr
Um ein eigenes Modul wirst du vermutlich nicht rumkommen. Wenn die Abfrage innerhalb eines Nodes ausgeführt wird, wird der Cache der Ansicht des Nodes standardmäßig nur dann geleert, wenn der Node aktualisiert wird. Ändern in dem Sinne meint nochmals abspeichern.
Der einfachste Weg, je nach Anwendungsfall, wäre ein custom Modul mit einem custom Block Plugin, der diesen Block eben nicht cached.