Одновременно прочитать и перезаписать файл в php

В php функциях fopen или классе SplFileObject существуют режимы(mode) в которых мы открываем файл на одновременное чтение и запись, однако почему-то на практике мало кто пользуется ими так как положено. Обычно пишут типа так:

По факту файл открывается 2 раза. Во-первых это минус к производительности. Во-вторых, используемая блокировка во втором случае вообще до фонаря. Считав file_get_contents() пять млн. долларов и добавив и записав +1, внезапно можно получить совсем не 6, ибо между чтениями кто-то вклинился и скоммуниздил чего-нибудь. Действия чтения и записи в файл нужно выполнять на одной блокировке.

Приведу пример как одновременно считать, перезаписать файл, обработав и записав данные в первой строке:

Вот так правильно.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *