Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сколько времени длится блокировка файла?
 
 автор: Владимир55   (06.11.2008 в 18:11)   письмо автору
 
 

Исполняются оператор flock($f, LOCK_EX), после чего к тому же файлу, что забокирован таким бразом, я обращаюсь с другой страницы. И никакой блокировки не ощущается - что она есть, что не было её.

Может, блокировка действует лишь доли секунды?

  Ответить  
 
 автор: ddhvvn   (06.11.2008 в 18:53)   письмо автору
 
   для: Владимир55   (06.11.2008 в 18:11)
 

Она действует столько, сколько длится работа с скрипта с файлом.
Если в скрипте нет "ничего такого", то конечно это время достаточно небольшое

  Ответить  
 
 автор: Владимир55   (06.11.2008 в 20:39)   письмо автору
 
   для: 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 будет заблокирован и перезапуск первого скрипта не вызывет продолжения счета. Но это не так - на блокировку текстового файла первый скрипт совершенно не реагирует!

Как это понять?

  Ответить  
 
 автор: ddhvvn   (06.11.2008 в 20:43)   письмо автору
 
   для: Владимир55   (06.11.2008 в 20:39)
 

А Вы сделайте как раз где нибудь (в пишушем скрипте) sleep на несколько секунд!
а в это время другим скриптом попробуйте достучаться до "заблокированного" файла. Вот и проверите! =)

  Ответить  
 
 автор: Владимир55   (06.11.2008 в 21:12)   письмо автору
 
   для: ddhvvn   (06.11.2008 в 20:43)
 

Этот "sleep" у меня определяется тем временем, что мышка прыгает с одной вкладки на другую. Примерно 3-5 секунд. Такое впечатление, что блокировка реально ничего не даёт...

  Ответить  
 
 автор: AcidTrash   (06.11.2008 в 21:46)   письмо автору
 
   для: Владимир55   (06.11.2008 в 20:39)
 

>Как я полагал, после этого файл data.txt будет заблокирован и перезапуск первого скрипта >не вызывет продолжения счета

Почему не вызовет, очень даже вызовет, так как, время скрипта (с flock) закончилось, а после этого файл свободен.
Блокировка файла идет на время работы скрипта, которым блокировка была выполнена.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования