[英]File manipulation in PHP: lock, read, clear, unlock
我希望一些PHP按此顺序执行以下操作:
但是我以一种或另一种方式提出的任何代码都总是放弃读写之间的锁定。
$fp = fopen('status.txt', 'r+');
flock($fp, LOCK_EX);
$str = fread($fp,1000); // [another hack. I just want it to read everything]
unlink('status.txt');
touch('status.txt');
有任何想法吗? 我不相信我对文件所做的任何事情。
我认为ftruncate可以执行您想要的操作,因为它可以在您已经打开的文件上工作。
http://www.php.net/manual/en/function.ftruncate.php
这是他们的例子:
<?php
$filename = 'lorem_ipsum.txt';
$handle = fopen($filename, 'r+');
ftruncate($handle, rand(1, filesize($filename)));
rewind($handle);
echo fread($handle, filesize($filename));
fclose($handle);
?>
所以我认为您想要的是这样的:
$fp = fopen('status.txt', 'r+');
flock($fp, LOCK_EX);
$str = fread($fp, filesize('status.txt'));
ftruncate($fp, 0);
flock($fp, LOCK_UN);
fclose($fp);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.