|
|
|
| Исполняются оператор flock($f, LOCK_EX), после чего к тому же файлу, что забокирован таким бразом, я обращаюсь с другой страницы. И никакой блокировки не ощущается - что она есть, что не было её.
Может, блокировка действует лишь доли секунды? | |
|
|
|
|
|
|
|
для: Владимир55
(06.11.2008 в 18:11)
| | Она действует столько, сколько длится работа с скрипта с файлом.
Если в скрипте нет "ничего такого", то конечно это время достаточно небольшое | |
|
|
|
|
|
|
|
для: ddhvvn
(06.11.2008 в 18:53)
| | Какого "такого"?
Есть страница, на которой стоит такой код:
$buff = file_get_contents("data.txt");
$buff ++;
$file = fopen ("data.txt", "w") ;
fputs ($file, $buff) ;
fclose ($file) ;
echo $buff ;
|
Я её перезапускаю из броузера и наблюдаю счет количества обращений.
Теперь на другой странице я пишу код
$adr = "data.txt";
if(!file_exists($adr)) fclose(fopen($adr, "a+t"));
$f=fopen($adr, "r+t") ;
flock($f, LOCK_EX);
|
Запуская эту страницу, я, вроде бы, блокирую доступ к файлу data.txt.
Как я полагал, после этого файл data.txt будет заблокирован и перезапуск первого скрипта не вызывет продолжения счета. Но это не так - на блокировку текстового файла первый скрипт совершенно не реагирует!
Как это понять? | |
|
|
|
|
|
|
|
для: Владимир55
(06.11.2008 в 20:39)
| | А Вы сделайте как раз где нибудь (в пишушем скрипте) sleep на несколько секунд!
а в это время другим скриптом попробуйте достучаться до "заблокированного" файла. Вот и проверите! =) | |
|
|
|
|
|
|
|
для: ddhvvn
(06.11.2008 в 20:43)
| | Этот "sleep" у меня определяется тем временем, что мышка прыгает с одной вкладки на другую. Примерно 3-5 секунд. Такое впечатление, что блокировка реально ничего не даёт... | |
|
|
|
|
|
|
|
для: Владимир55
(06.11.2008 в 20:39)
| | >Как я полагал, после этого файл data.txt будет заблокирован и перезапуск первого скрипта >не вызывет продолжения счета
Почему не вызовет, очень даже вызовет, так как, время скрипта (с flock) закончилось, а после этого файл свободен.
Блокировка файла идет на время работы скрипта, которым блокировка была выполнена. | |
|
|
|