首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在不关闭读取状态的情况下写入文件?PHP

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

Stack Overflow用户
提问于 2016-03-23 21:47:39
回答 1查看 625关注 0票数 0

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

代码语言:javascript
复制
$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中可以做到吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-23 21:56:29

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

代码语言:javascript
复制
$filename = "test.txt";
$rw_handle = fopen($filename, "c+"); //open for read/write, allow fseek
$r_handle = fopen($filename, "r");

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36189316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档