繁体   English   中英

PHP中的文件操作:锁定,读取,清除,解锁

[英]File manipulation in PHP: lock, read, clear, unlock

我希望一些PHP按此顺序执行以下操作:

  1. 获得对文件的独占锁定(如果已锁定则等待)
  2. 读取文件内容
  3. 清空所有内容的文件
  4. 取下锁

但是我以一种或另一种方式提出的任何代码都总是放弃读写之间的锁定。

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM