Lesen und schreiben einer Datei während halten lock
Ich bin eine einfache Seite zu laden Zähler durch das speichern wird der aktuelle Zähler in eine Datei. Dies ist, wie ich dies tun möchten:
- Die Datei sperren (Herde)
- Lesen Sie die aktuelle Zählung (fread)
- Es Inkrement (++)
- Schreiben neue Zählung (fwrite)
- Entsperren Sie Datei/schließen (Herde/fclose)
Kann dies getan werden, ohne die Sperre?
Wie ich es verstehe, die Datei kann nicht geschrieben werden, ohne die Sperre. Die einzige Möglichkeit, die ich habe kommen mit, um diese Situation zu bewältigen, ist das schreiben von Zeichen mit "r+" - Modus, und dann zählen von Zeichen.
- Die 1 Charakter / das laden der Seite könnte eigentlich ganz lustig 🙂 Beobachtete, dass die Datei wachsen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt, Sie könnte verwenden Herde. Ein einfaches Beispiel wäre:
rewind
hat den trickrewind($handle)
nachftruncate($handle, 0)
Ich glaube, Sie können dies erreichen, mit
flock
. Öffnen Sie einen Zeiger in die Datei,flock
es, die Daten zu Lesen, schreiben Sie die Daten, dann close (schließen automatisch entsperrt).http://php.net/flock
Ja, Sie haben zu verwenden, Zurückspulen, bevor
ftruncate
. Andernfalls wird der alte Inhalt der Datei wird nur aufgefüllt mit Nullen.Den Arbeitsablauf ist: