|
|
|
| По-гуглил и не нашёл ответа.
Надо ли перед file() ставить flock()?
Или может file сама это делает? | |
|
|
|
|
|
|
|
для: Yuriev
(25.03.2011 в 14:16)
| | не надо. file не делает, да и зачем ей это делать? она же читает файл, а не записывает. блокировку стоит делать перед записью, да и то, только тогда, когда существует вероятность того, что кто-то кроме вас может попытаться записать этот же файл в один и тот же момент времени (имхо конечно) | |
|
|
|
|
|
|
|
для: psychomc
(25.03.2011 в 14:24)
| | В том то и дело, что во время работы file() с файлом возможно другим скриптом будет запись в этот файл.
Вот и терзают меня смутные сомнения, а в сети все примеры для flock написаны с другими функциями. | |
|
|
|
|
|
|
|
для: Yuriev
(25.03.2011 в 18:57)
| | не в ту сторону вы копаете. в мануал нужно смотреть.
второй аргумент функции flock вам нужен:
LOCK_SH - общая блокировка, чтение
LOCK_EX - эксклюзивная блокировка, запись.
в конечном итоге, вам либо вообще не нужно использовать функцию flock, либо использовать ее со вторым параметром LOCK_EX в том скрипте, в котором происходит запись. когда ее стоит использовать я написал в предыдущем сообщении.
p.s кстати, а вас не смутил тот момент, что а в сети все примеры для flock написаны с другими функциями. ? 8-)
более того, как вы вообще собирались использовать вместе file и flock, если функция file возвращает массив данных файла, а для функции flock нужен дескриптор файла как обязательный параметр? | |
|
|
|
|
|
|
|
для: psychomc
(25.03.2011 в 22:11)
| | Т. е. во время чтения функцией file() файла ни какой другой процесс не сможет изменить этот файл?
Мне другие скрипты недоступны, программируются не менгой и работают когда и сколько не спрашивая и не предупреждая меня. | |
|
|
|
|
|
|
|
для: Yuriev
(25.03.2011 в 22:59)
| | думаю, что если ваш скрипт занимается только чтением, то смотреть в сторону flock вообще не стоит. пусть голову ломают те, кто пишет скрипт записи | |
|
|
|
|
|
|
|
для: psychomc
(25.03.2011 в 23:07)
| | Я ни с чего не взял, я же только спрашиваю.
Пусть пишут и ломают голову другие - не возражаю.
Но меня интересует только чтение файла и только функцией file. | |
|
|
|
|
|
|
|
для: Yuriev
(25.03.2011 в 23:18)
| | тогда http://www.php.net/manual/en/function.file.php - то что доктор прописал :)
только посмотрите еще в сторону других функций чтения файла (fgets, fread, file_get_contents)может быть они вам больше подойдут. | |
|
|
|
|
|
|
|
для: Yuriev
(25.03.2011 в 14:16)
| | Достаточно будет проверить is_readable(). | |
|
|
|
|
|
|
|
для: Yuriev
(25.03.2011 в 14:16)
| | Как то не получается у меня вопросы задавать понятно.
Попробую ещё раз.
Функция file начала читать из файла. На момент чтения ею второй строки, другой скрипт меняет местами первую и третью строки. В итоге иеем массив, содержимое которого
первая строка,
вторая строка,
первая строка.
А это не соответствует ни тому, что было в файле, ни тому, что есть сейчас.
И кому нужны будут такие случайные данные, иными словами, белиберда?
Возможна ли такая ситуация или во время чтения этой функцией ни кто не сможет изменить файл? | |
|
|
|
|
|
|
|
для: Yuriev
(26.03.2011 в 13:38)
| | Более подробнее опишите другой скрипт, который туда будет писать - так как от того, что он делает все и зависит (если он использует блокировки, все будет нормально, если нет - может получиться по всякому, вплоть до того, что file() столкнется с пустым файлом). Вообще, пока все скрипты, пишущие в файл используют блокировку - все будет хорошо и у тех, кто читает и у тех, кто пишет. Как только, кто-то один не использует блокировку - вопрос времени, когда данные в файле будут безвозвратно повреждены. | |
|
|
|