LINUX.ORG.RU

file_get_contents и flock

 , , ,


2

1

Почему в этом вашем PHP у функции file_put_contents есть параметр flags, которым можно задать блокировку файла во время записи, а у противоположной функции file_get_contents штатной возможности использовать блокировку во время чтения нет? Есть ли какие-либо аналоги file_get_contents с поддержкой блокировок без простыней кода?

☆☆

Последнее исправление: wintrolls (всего исправлений: 1)
Ответ на: комментарий от hbars

А зачем для чтения блокировка?

Например если один скрипт читает данные с файла а второй в этот самый момент в него начинает писать. В этом случае первый скрипт считает часть данных либо вообще ничего.

wintrolls ☆☆
() автор топика
Ответ на: комментарий от hbars

Теоритечески он будет читать данные с начала. Так что может успеть.

А может и нет, особенно если запросов много одновременно. В третьекедах/тринити есть какая-то утилита для рекурсивной проверки корректности ссылок на вебсайтах, после неё в файлах остаётся мусор вместо данных.

wintrolls ☆☆
() автор топика
Последнее исправление: wintrolls (всего исправлений: 1)

Вот здесь предлагают использовать stream_get_contents вместо file_get_contents. Но таки интересно каковы причины отказа от использования флагов в file_get_contents, удобно же было бы.

wintrolls ☆☆
() автор топика

Лучше вообще не использовать file_put_contents. fread и fwrite используются добропорядочными барышнями!

bug
()
Ответ на: комментарий от wintrolls

В третьекедах/тринити есть какая-то утилита для рекурсивной проверки корректности ссылок на вебсайтах

KLinkStatus, да.

wintrolls ☆☆
() автор топика

В общем, проблему решил, свелосипедив пару своих альтернативных функций с использованием flock и fopen/fclose.

wintrolls ☆☆
() автор топика

пиши в другой файл, а потом переименовывай

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.