Mediendeponie Rotating Header Image

September, 2013:

Symfony 1.4 cached MySQL Query dank APC. F*§( it!

VN:F [1.9.22_1171]
Rating: 5.0/5 (3 votes cast)

Ich habe in einem Symfony 1.4-Backend-Generator-Modul embedded-tables verwendet, die ich nun nachträglich um zwei weitere Felder erweitert habe. Nach dem Anpassen von schema.yml, dem neu Generieren der Klassen, dem einbauen der entsprechenden Widgets und dem leeren des Caches konnten zwar Daten eingegeben und gespeichert werden, leider wurden die gespeicherten Daten aber nicht angezeigt. Der Debug-Mode verriet mir, daß hier explizit die alten Felder ausgelesen, die neuen aber ignoriert werden. Doch warum? Und wo entsteht dieser Query?

Nachdem ich wirklich Stunden damit verbracht habe, zu versuchen, herauszufinden, warum, wie oder wo der Query für ein Admin-Generator-Module mit embedded tables zustande kommt, habe ich heute morgen von meinem Freund Michael den entscheidenden Tipp bekomme. Und das von einem Java-Programmierer. Tss…

Ja, der doofe PHP-Accelerator (APC) war’s, der den MySQL-Query tatsächlich noch gecached hatte. Offensichtlich wird der APC-Cache nämlich nicht bei einem ./symfony cc geleert. Er kann auch gar nicht übers CLI geleert werden.

Also kurzerhande in die preExecute() des Moduls folgende Zeilen eingefügt:
apc_clear_cache();
apc_clear_cache('user');
apc_clear_cache('opcode');

und siehe da – der Query ist nun vollständig. 🙂

VN:F [1.9.22_1171]
Rating: 5.0/5 (3 votes cast)