1-ый скрипт: $filer=fopen($fn,"r");
1-ый скрипт: flock($filer,2);
2-ый скрипт: $file=file($fn); // ВОТ ЗДЕСЬ! :)
Проблемы с доступом к файлу
Пример одновременного выполнения двух одинаковых скриптов:
1-ый. $filer=fopen($fn,"r");
2-ой. $filer=fopen($fn,"r");
1-ый. flock($filer,2);
2-ой. flock($filer,2); // Вот здесь вопрос!
...
Знающие люди, подскажите плиз, как поведет себя второй скрипт, когда попытается поставить защиту уже на закрытый файл? Будет ждать, пока файл не будет открыт первым скриптом?
А в таком случае что:
1-ый. $filer=fopen($fn,"r");
1-ый. flock($filer,2);
2-ой. $filer=fopen($fn,"r"); // Как второй скрипт поведет себя на этой строчке кода?
Заранее респекты за ответы...
В твоем случае функция flock блокирует файл, и никто другой в него писать не сможет. Если файл уже заблокирован, то flock ждет пока файл не освободится.
Лучше измени структуру данных так, чтоб flock использовался как можно реже. А еще лучше используй БД.
Цитата:
Originally posted by mike
Почитай документацию. Функция [phpdoc]flock[/phpdoc] работает по разному, в зависимости от ключей.
В твоем случае функция flock блокирует файл, и никто другой в него писать не сможет. Если файл уже заблокирован, то flock ждет пока файл не освободится.
Лучше измени структуру данных так, чтоб flock использовался как можно реже. А еще лучше используй БД.
Почитай документацию. Функция [phpdoc]flock[/phpdoc] работает по разному, в зависимости от ключей.
В твоем случае функция flock блокирует файл, и никто другой в него писать не сможет. Если файл уже заблокирован, то flock ждет пока файл не освободится.
Лучше измени структуру данных так, чтоб flock использовался как можно реже. А еще лучше используй БД.
Цитата:
Originally posted by mike
Почитай документацию. Функция [phpdoc]flock[/phpdoc] работает по разному, в зависимости от ключей.
В твоем случае функция flock блокирует файл, и никто другой в него писать не сможет. Если файл уже заблокирован, то flock ждет пока файл не освободится.
Лучше измени структуру данных так, чтоб flock использовался как можно реже. А еще лучше используй БД.
Почитай документацию. Функция [phpdoc]flock[/phpdoc] работает по разному, в зависимости от ключей.
В твоем случае функция flock блокирует файл, и никто другой в него писать не сможет. Если файл уже заблокирован, то flock ждет пока файл не освободится.
Лучше измени структуру данных так, чтоб flock использовался как можно реже. А еще лучше используй БД.
А что будет делать функция fopen, когда попытается получить доступ (например, fopen($filename,"r") ) к заблокориванному другим скриптом файлу? Тоже будет ждать?
Неужели никто не знает? :)
Цитата:
Originally posted by Azatrix
Народ!
Неужели никто не знает? :)
Народ!
Неужели никто не знает? :)
Ну дали же две ссылки. Там все написано. fopen сработает независимо от того заблокирован файл или нет.
Например,
Код:
Цитата:
Originally posted by Azatrix
А как поведет себя функция file() при попытке прочитать такой же файл, заблокированный другим скриптом?
Например,
А как поведет себя функция file() при попытке прочитать такой же файл, заблокированный другим скриптом?
Например,
Код:
1-ый скрипт: $filer=fopen($fn,"r");
1-ый скрипт: flock($filer,2);
2-ый скрипт: $file=file($fn); // ВОТ ЗДЕСЬ! :)
1-ый скрипт: flock($filer,2);
2-ый скрипт: $file=file($fn); // ВОТ ЗДЕСЬ! :)
Слушай, это все замечательно написано в мануале, а что не написано, то проверяется опытным путем.