我这段代码:
$file = fopen($path, 'r+');
flock($file, LOCK_EX);
// reading the file into an array and doing some stuff to it
for ($i=0; $i<count($array); $i++)
{
fwrite($file, $array[$i]);
}
flock($file, LOCK_UN);
fclose($file);
基本上我想要做的是:打开文件>锁定它>阅读它>做一些事情>清除文件>写入文件>解锁它>关闭它.
问题是清算部分.我知道我可以用fopen($file,’w’)做到这一点,但随后阅读将是一个问题.也许我可以以某种方式改变模式?
保罗,任何帮助都会受到赞赏
解决方法:
如果使用fseek将指针设置为0,则可以像这样运行ftruncate:
// reading the file into an array and doing some stuff to it
//1
fseek($handle,0); //Set the pointer to the first byte
//2
ftruncate($handle,filesize("yourfile.ext")); //from the first byte to the last truncate
//3 - File should be empty and still in writing mode.
for ($i=0; $i<count($array); $i++)
{
fwrite($file, $array[$i]);
}
随着ftruncate意识到这些问题,请考虑第二个参数:
>如果size大于文件,则文件以null字节扩展.
>如果size小于文件,则文件将被截断为该大小.
> http://www.php.net/manual/en/function.ftruncate.php
> http://www.php.net/manual/en/function.fseek.php