2017-01-13 2 views
2

Ich verwende Symfony, um einige Dateien in meinem Dateisystem zwischenzuspeichern.Wie erhalte ich einen creation timestamp vom Symfony-Cache-Eintrag?

Momentan habe ich eine YAML-Datei, die in ein PHP-Array decodiert wird, das wiederum den Cache mit der Symfony Caching-Komponente speichert.

Wenn sich meine YAML-Datei ändert, muss ich sie erneut zwischenspeichern, auch wenn sie sich bereits im Cache befindet. Ich muss die Modifikationszeit der zwischengespeicherten Datei (die das decodierte YAML enthält) abrufen und sie mit meiner YAML-Datei vergleichen.

Wenn die Modifikationszeit meiner YAML-Datei neuer ist, muss ich neu zwischenspeichern.

Wie kann ich jedoch die Erstellungszeit des Cache-Eintrags bekommen? Ich weiß, dass Symfony die Erstellungszeit im Cache-Eintrag hat. Es hat also die Daten, ich frage mich nur, ob es einen sauberen Weg gibt, um es zu bekommen. Ich weiß das, weil der Eintrag wie folgt aussieht:

1515867059 
<CacheEntryName> 
<SerializedData> 

1515867059 ist die Unix-Zeitstempel, wenn es erstellt wurde.

Hoffentlich kann mir jemand helfen.

Bearbeiten: Ich denke, es wäre auch hilfreich, wenn ich den absoluten Pfad zum Cache-Eintrag erhalten könnte. Damit könnte ich ein SplFileInfo Objekt generieren und so die Modifikationszeit davon bekommen.

Prost.

+0

Frage: Haben Sie eine Deploy-Pipe oder einen automatisierten Prozess? Wenn dies der Fall ist, erstellen Sie einfach den Cache neu und Sie werden sicher sein, dass Ihre Informationen zu 100% stimmen. Natürlich kann die Cache-Wiederherstellung auch über Cache-Steller erfolgen, so dass Sie sich keine Gedanken um die Leistung machen müssen, da es sich um eine einmalige Aufgabe handelt, die vor der Live-Rückgabe der Anwendung ausgeführt wird – DonCallisto

Antwort

0

Symfony-Cache hat derzeit keine Möglichkeit, damit umzugehen. Als temporäre Lösung enthalten ich den Zeitstempel selbst mit einem Array:

$cached->set([ 
    'value' => $value, 
    'timestamp' => time() 
]); 

Werke für jetzt.

Verwandte Themen