浅析php中如何在有限的内存中读取大文件
发布时间:2020-05-25 18:49:50 所属栏目:PHP 来源:互联网
导读:突然遇到了一个要读取超过80M文件的需求,很悲剧的,不管是file_get_content还是file什么的,都会将读取的文件一次性加载到内存中
|
正常情况下,我们可以使用fseek来读取,好处就是不会一次性读取,以下代码只适合边取边处理的情况,不适合一次性读取一次性处理。 <FONT style="COLOR: #ff0000">可以用以下办法生成测试文件<div class="codetitle"><a style="CURSOR: pointer" data="44813" class="copybut" id="copybut44813" onclick="doCopy('code44813')"> 代码如下:<div class="codebody" id="code44813">$file_handle = fopen("./csdn.txt","rb+"); for ($index1 = 1; $index1 <= 2000000; $index1++) { fwrite($file_handle,'http://jb51.cc'.$index1."r"); } fclose($file_handle); 读取处理代码如下:<div class="codetitle"><a style="CURSOR: pointer" data="36527" class="copybut" id="copybut36527" onclick="doCopy('code36527')"> 代码如下:<div class="codebody" id="code36527">$i = 0; $now = ''; while ($i >= 0) { if ($i>10) { break; } fseek($file_handle,SEEK_CUR); $now = fgetc($file_handle);//可以自己写个判断false表示文件到头 if ($now == "r") { echo '找到断点'; } echo $now; $i++; } fclose($file_handle); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
