加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP fopen()内存效率和用法

发布时间:2020-12-13 17:21:23 所属栏目:PHP教程 来源:网络整理
导读:我正在构建一个系统来创建文件,范围从几Kb到大约50Mb,而这个问题更多的是出于好奇而不是其他任何问题.我在网上找不到任何答案. 如果我使用 $handle=fopen($file,'w'); 我打电话之前存储的$句柄在哪里 fclose($handle); ?它存储在系统的内存中,还是存储在某
我正在构建一个系统来创建文件,范围从几Kb到大约50Mb,而这个问题更多的是出于好奇而不是其他任何问题.我在网上找不到任何答案.

如果我使用

$handle=fopen($file,'w');

我打电话之前存储的$句柄在哪里

fclose($handle);

?它存储在系统的内存中,还是存储在某个临时文件中?

其次,我使用一次占用1024字节数据的循环来构建文件,每次都将数据写入:

fwrite($handle,$content);

然后它打电话

fclose($handle);

当循环完成并写入所有数据时.但是,使用一个循环是否更有效或内存友好

$handle = fopen($file,'a');
fwrite($handle,$content);
fclose($handle);

解决方法

在PHP术语中,fopen()(以及许多其他函数)返回 resource.所以$handle是一个引用与$file关联的文件句柄的资源.

Resources是内存中的对象,它们不会通过PHP持久保存到文件系统.

您目前的方法是两种方案中效率更高的方法.打开,写入,然后一遍又一遍地关闭同一个文件的效率低于仅打开一次,写入多次,然后关闭它.打开和关闭文件需要设置输入和输出缓冲区并分配其他内部资源,这是相对昂贵的操作.这是一个很糟糕的比喻,但这就像每次你停车时关掉汽车引擎一样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读