是否可以在不关闭文件读取状态的情况下写入文件?PHP


Is it possible to write to file without closing its reading state? PHP

我很想做一个测试。我的问题是,是否可以同时打开文件进行读取和写入,所以如果我对一个文件有更多的读写操作,我就不需要在循环中关闭读取状态、读取、打开写入状态、写入等等。

$filename = "test.txt";
$handle = fopen($filename, "rwb");
fseek( $handle , 15360 );
$contents = fread($handle, 51200);
$start = microtime (true);
fseek( $handle , 1 );
fwrite ( $handle , $contents );
fclose($handle);

这个测试不起作用。我预计,我会读取数据,并将fseek指针移动到文件的开头1或0位置,然后写入数据。但由于某些原因,此操作失败,结果写入了0(int)个字节。因此,我的问题是,有可能做到这一点吗?或者我需要先关闭文件进行阅读?

作为相关的子问题,是否有可能让更多用户从不同位置同时读取或写入文件。因为这应该模拟数据库的读/写操作。您知道mysql是如何工作的——更多的用户可以随时编写相同的表-相同的文件。我知道这在C/C++中不是问题,但在php中可以做到吗?

您可以在同一个文件上创建多个文件处理程序。只需fopen()它两次,一次只读,另一次读/写。尽管我不知道你为什么要这样做,除非你是从文件的两个不同点读写的。

$filename = "test.txt";
$rw_handle = fopen($filename, "c+"); //open for read/write, allow fseek
$r_handle = fopen($filename, "r");

如果您想让多个进程从不同的位置读取和写入文件,则需要使用flock() 进行文件锁定

相关文章: