2016-07-27 17 views
0

Ich habe die CodeIgniter Codedetails überprüft und ich habe gefunden (was ich denke) eine seltsame Inkonsistenz zwischen den Caching-Techniken für DB Queries vs Ansichten verwendet.Codeigniter Query Caching nicht mit Dateisperre

Zum Zwischenspeichern von Sichten (über die Output-Klasse) verwendet Codigniter Dateisperren. Dadurch wird sichergestellt, dass mehrere gleichzeitige Benutzer nicht versehentlich gleichzeitig in dieselbe Cachedatei schreiben.

Jetzt macht das für mich absolut Sinn. Das Problem ist, dass die Datenbankabfrage-Caching-Technik (über die DBCache-Klasse) diese Technik nicht zu verwenden scheint, und es hat mich zum Nachdenken gebracht.

Ist das Absicht? Warum sollte keine Dateisperrung für Datenbankabfragen erforderlich sein (vorausgesetzt, dass sie auch für dasselbe Problem anfällig sind)? Oder das ist ein einfacher Fehler im Code?

Antwort

1

Ich habe die Antwort selbst gefunden.

Es stellt sich heraus, dass Datenbankabfragen auch Dateisperren verwenden.

Die DBCache-Klasse in Codeigniter verwendet den Helper File - der wiederum Dateisperrung in seiner Funktion write_file() verwendet.

Das Output-Caching führt dies explizit ohne den Helper File aus.