2015-04-13 2 views
0

так если я FOPEN один файл с +, какс PHP FOPEN() Стая() Файл() Почему это работает как это

fopen($filepath,'a+'); 
file($filepath); 

, а затем я использовать файл ($ Filepath) получить содержимое файла это нормально

но почему я когда я заблокировал файл со стадом, я также могу использовать функцию file() получить контент почему?

$fp = fopen($filepath, "a+"); 
while (1) { 
    $f =flock($fp,LOCK_EX); 
    if($f){ 
    fwrite($fp,'abc'); 
    echo "ok loked \n"; 
    sleep(1); 
    $te =file($filepath); 
    if(strlen($te[0])==10){ 
     echo "this is cont ".$te[0]."\n"; 
     echo "ok this the end \n"; 
     ftruncate($fp,0); 
     fflush($fp); 
    } 
    flock($fp, LOCK_UN); 
    break; 
    } 
} 
fclose($fp); 
  1. насчет они отношения?

  2. когда стая файл функция файл() является использование FOPEN ресурс?

  3. файл не зависит от функции или использовать Еореп?

+0

Sidenote: Если это не псевдо-код, у вас есть ошибка синтаксиса в 'эхо«ОК loked „\ п“; 'Это бросает. –

+0

@ Fred-ii- it теперь работает – poone

+0

Извините, но я считаю, что довольно сложно поверить, что 'echo 'ok loked" \ n ";' будет вызывать ошибку синтаксического анализа. Добавьте отчет об ошибках в начало вашего файла (ов) сразу после открытия PHP-тега , например '

ответ

0

fopen и file две разные функции.

Еореп Функция Еореп делает что-то совершенно другое, он открывает файл дескриптор, который функционирует как поток для чтения или записи файла. Он - это функция более низкого уровня, простая обертка вокруг функции C fopen , и просто вызов fopen ничего не сделает, кроме как открыть поток .

файл - читает весь файл в массив

+0

как насчет стаи(), когда я использую, что случилось? он заблокировал файл? но я могу использовать файл() получить контент @ being-sunny – poone

+0

см. раздел предупреждения php 'flock' http://php.chinaunix.net/manual/hu/function.flock.php –