Moin,
Warum JSON und nicht PHPs eigenes und auf die vorhandenen Typen spezialisiertes serialize()/unserialize()? Warum überhaupt dateibasiert und nicht mit SQLite? Mit SQLite hättest du die Sperr-Sorgen nicht, das kümmert sich selbst darum.
- JSON vs serialize: Von mir aus auch gerne serialize/unserialize. Problem bleibt. Allerdings ist mir JSON lieber, denn JSON ist ein standardisiertes Format, praktisch alles und jeder kann damit umgehen. Mit PHP serialize habe ich das nicht.
Warum eine Klasse? file_get_contents() und file_put_contents() erledigt den Zugriff in einem Rutsch. Für das Schreiben kennt file_put_contents() auch ein Flag, das die Sperre setzt.
- Eine Klasse weil ich OOP programmiere. Eine Datei ist ein Objekt => eine Klasse. Die hat Methoden wie size() oder isWritable().
Mit file_***_contents habe ich folgendes Problem:
- Programm A liest ein (ich nehme an file_get_contents setzt LOCK_SH) und arbeitet mit den Daten.
- Programm B liest ein
- Programm A schreibt die veränderten Daten zurück
- Programm B schreibt die veränderten Daten zurück => Veränderungen von A sind weg
Ansonsten kann ich zu Dateisperren nicht mehr sagen, als auf Sperren von Dateien verweisen.
Kenn ich schon :)
Gruß,
Take