我很想做个测试。我的问题是,是否可以同时打开文件进行读写,所以如果我对一个文件有更多的读写操作,我就不需要在循环中关闭读取状态、读取、打开写入状态、写入等等。
$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);这个测试不起作用。我预期,我将读取数据,并将搜索指针移动到文件的开始位置(1或0位置),然后编写数据。但由于某种原因,此操作失败,结果是写入了0 (int)字节。因此,我的问题是,是否可以这样做?还是我需要先关闭文件阅读?
作为一个与相关的子问题----是否有可能使更多的用户能够同时从不同的位置读取或写入文件。因为这应该模拟数据库的读/写操作。您知道mysql是如何工作的--更多的用户可以随时编写相同的表-相同的文件。我知道这在C/C++中不是问题,但是在php中可以做到吗?
发布于 2016-03-23 21:56:29
您可以在同一个文件上创建多个文件处理程序。只要fopen()它两次,一个是只读的,另一个是读/写的。不过,我不知道为什么要这样做,除非您是从文件中的两个不同点进行读写。
$filename = "test.txt";
$rw_handle = fopen($filename, "c+"); //open for read/write, allow fseek
$r_handle = fopen($filename, "r");如果您想让多个进程从不同的位置读取和写入一个文件,则需要使用flock()锁定文件
https://stackoverflow.com/questions/36189316
复制相似问题