flock не позволяет выводить файл на экран

Ysn

Guest
flock не позволяет выводить файл на экран

Если я открываю файл просто так, считаю в нем количество строк, и в for - принтую каждую, то все работает... Если же я добавляю flock, то информация перестает считываться из файла... Так как залочить файл для всех, кроме нынешнего, сию-секундного процесса?

$fp = fopen ("a.txt","r");
$contents=file("a.txt");
for($i=0;$i<count($contents);$i++){
$reklama = explode("*", $contents[$i]);
print $reklama[0];
}
fclose ($fp);

Так работает. А так:

$fp = fopen ("a.txt","r");
flock ($fp,LOCK_EX);
$contents=file("a.txt");
for($i=0;$i<count($contents);$i++){
$reklama = explode("*", $contents[$i]);
print $reklama[0];
}
flock ($fp,LOCK_UN);
fclose ($fp);

....нет.

Видать, я чего-то не так понял из описания функций...
 

vitus

мимо проходил
$contents=file("a.txt"); не может открыть себе пойнтер, потомучно ты его залочил, читай из файлпойнтера, которым лочил.

-~{}~ 22.12.04 11:05:

и потом, зачем его эксклюзивно лочить, если только читаешь ?
 

Ysn

Guest
Автор оригинала: Фанат
я одно не понял - при чем здесь экран?
Экран тут при мне. А я на него смотрю.



не может открыть себе пойнтер, потомучно ты его залочил, читай из файлпойнтера, которым лочил.
Можно по-руски? А то сложновато понять...


А на что ругается напишишешь?
А ни на что... просто не печатает...
 

vitus

мимо проходил
$fp = fopen ("a.txt","r");
$fp = файлпойнтер

file("a.txt") - тоже делает чтото вроде fopen("a.txt","r")
но ты сделал эксклюзивный LOCK_EX на файл, поэтому ничего у file() и не получается, ты ему не разрешил.

сделай лок конкурентный LOCK_SH, а то будет через раз читать.
 

Фанат

oncle terrible
Команда форума
откывать - чтобы залочить.
а зачем лочить - это уже вопрос.
который ему уже задали.
 

Djibo

Guest
А можно все таки узнать зачем было лочить LOCK_EX'ом?
 
Сверху