php flock и fread и fwrite

Я вижу, как люди используют стадо вот так:

if (!$fp = fopen($file_name, 'wb'))  
{  
    return FALSE;  
}  

if (flock($fp, LOCK_EX))  
{  
    fwrite($fp, serialize($data));  
    flock($fp, LOCK_UN);  
}

Также это:

if (!$fp = @fopen($file_name, 'rb'))  
{  
    return FALSE;  
}  

flock($fp, LOCK_SH);  

$data = '';  

if (filesize($file_name) > 0)  
{  
    $data = unserialize(fread($fp, filesize($file_name)));  
}  

Но нет ли шанса, что кто-то еще отредактирует файл между звонком fopenи звонком flock? и тот же вопрос дляfread


РЕДАКТИРОВАТЬ:
Чтобы уточнить, почему я это спрашиваю... Я основываю свой вопрос на кодездесь,В ситуации кэширования mysql, что может помешать 20 людям одновременно получить доступ к файлу, если все они могут попасть между fopen и flock?

Является ли этот код надежным?

7
задан pilcrow 7 August 2012 в 14:03
поделиться