Я вижу, как люди используют стадо вот так:
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?
Является ли этот код надежным?