Est-ce que le fichier () verrouiller le fichier lors de la lecture?
Question
J'utilise le fichier () pour lire à travers un fichier comme un tableau avec des onglets. Je veux verrouiller le fichier mais je ne peux pas sembler obtenir troupeau () travaillant sur le dossier. Est-il possible de faire cela? Si c'est le cas, comment? Dans la négative, le fichier () verrouiller le fichier depuis le début et à atténuer les problèmes de partage potentiel?
La solution
Selon la documentation (en particulier les commentaires), il a gagné « t lire un fichier qui a été verrouillé par flock
.
Vous avez 2 solutions de rechange.
-
Lire le fichier avec
fgets
(sans vérification d'erreurs):$f = fopen($file, 'r'); flock($f, LOCK_SH); $data = array(); while ($row = fgets($f)) { $data[] = $row; } flock($f, LOCK_UN); fclose($f);
-
Lire le fichier avec
file()
et en utilisant un "lockfile" séparée:$f = fopen($file . '.lock', 'w'); flock($f, LOCK_SH); $data = file($file); flock($f, LOCK_UN); fclose($f); unlink($file . '.lock');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow