Sperrt File () die Datei beim Lesen?
Frage
Ich verwende File (), um eine Datei wie ein Array mit Registerkarten durchzulesen. Ich möchte die Datei sperren, aber ich kann Opfer () an der Datei nicht arbeiten lassen. Ist es möglich, dies zu tun? Wenn das so ist, wie? Wenn nicht, sperrt die Datei () die Datei vom Start aus und lindert potenzielle gemeinsame Nutzungsprobleme?
Lösung
Entsprechend die Dokumentation (Insbesondere die Kommentare) wird keine Datei gelesen, die über die übertragen wurde flock
.
Sie haben 2 Alternativen.
Lesen Sie die Datei mit
fgets
(ohne Schecks auf Fehler):$f = fopen($file, 'r'); flock($f, LOCK_SH); $data = array(); while ($row = fgets($f)) { $data[] = $row; } flock($f, LOCK_UN); fclose($f);
Lesen Sie die Datei mit
file()
und mit einer separaten "Lockfile":$f = fopen($file . '.lock', 'w'); flock($f, LOCK_SH); $data = file($file); flock($f, LOCK_UN); fclose($f); unlink($file . '.lock');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow