[TYPO3-german] Merkwürdiges Verhalten bei DB-Abfragen

Tobias Wolf tobias.wolf at evision.de
Fri Dec 11 20:01:46 CET 2009


Hallo zusammen,

aktuell habe folgendes Problem:

Ich habe eine Extension geschrieben welche in mehrere Submodule 
aufgeteilt ist.

Jetzt ist auf einer Seite die Extension in der Konfiguration zur 
Dateneingabe eingebunden und auf einer zweiten Seite sollen die Daten, 
welche in die DB geschrieben worden sind als Liste ausgegeben werden.

Es wird also ein Formular angezeigt in welchem Daten eingeben werden 
können. Nachdem die Daten von der Extension verarbeitet und in die DB 
geschrieben worden sind wird eine kurze Bestätigungsseite angezeigt mit 
einem Link zu der Ausgabe-Seite.

So weit so gut.

Wenn ich allerdings sofort auf den Link zur Ausgabe-Seite klicke, werden 
mit zwar die Daten aus der DB wie gewünscht angezeigt, allerdings ohne 
den aktuellen Datensatz. Dieser erscheint nach mehrmaligen Seite 
neuladen (am besten per SHIFT-F5).

Da denkt doch sofort daran, ist ja klar, die Seite wurde mit Sicherheit 
aus dem Cache geholt.

Nur habe ich den Cache zu Entwicklung per Typoscript ausgeschaltet:

config {
no_cache = 1
}

Zur Sicherheit habe ich in der Extension den Cache per ext_localconf.php 
ausgeschaltet:
t3lib_extMgm::addPItoST43($_EXTKEY, 'pi1/class.user_extclass_pi1.php', 
'_pi1', 'list_type', 0);

Über die Extension developerlog lasse ich mir Logausgaben zeigen, vor 
die Anzahl der gefundenen Reihen der SQL-Abfrage und auch hier wird 
zunächst die neue Zeile nicht mitgezählt.

Nativ per SQL sehe ich den neuen Datensatz natürlich sofort.

Die Daten werden per

$GLOBALS['TYPO3_DB']->exec_INSERTquery()

in die DB eingefügt.

Die Abfrage erfolgt mit

$res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray()

Wisst ihr eventuell noch weitere Gründe, warum auf der Anzeigeseite der 
frisch eingefügt Datensatz nicht erscheint? Werden irgendwie SQL Queries 
gecachet?

Es ist wohl der eAccelerator 0.9.5.3 installiert, ich habe aber nichts 
gefunden was darauf hindeutet das hier SQL Queries gecached werden, bzw. 
man muss spezielle Methoden benutzen damit SQL Queries gecached werden.
Aber selbst wenn, da sich das Resultset definitv geändert hat, sollte  
dieses auch zurückgegeben werden.

Leider haben mich Google und Co in dieser Sache noch nicht schlauer 
gemacht.

Vielleicht hat einer von euch noch ne Idee. Ich habe versucht alle 
relevanten Information zu geben, ohne einfach stupide den komplette 
PHP-Code und Typo3-Config reinzukopieren. Bitte sagt Bescheid, wenn euch 
bestimmte Informationen fehlen, ich werde versuchen diese so gut wie 
möglich zu ergänzen.

Schonmal vielen Dank im Vorraus ...

Gruß,

Tobias Wolf


More information about the TYPO3-german mailing list