我看到人们像这样使用羊群:
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之间进入吗?
那个代码是万无一失的吗?