服务器内存为 256M,怎么用 php 读取 10G 的文件?(面试问题)

2015 年 7 月 9 日
 ning1022

真的没想到好办法,求大神指点。

5767 次点击
所在节点    PHP
19 条回复
loveyu
2015 年 7 月 9 日
用标准的文件打开方式就行了
em70
2015 年 7 月 9 日
把虚拟内存设置到20G
maskerTUI
2015 年 7 月 9 日
加钱加配置
StarBrilliant
2015 年 7 月 9 日
一般解决方法:1楼
小清新解决方法:2楼
2B解决方法:3楼
Sunyanzi
2015 年 7 月 9 日
琢磨了一下 ... 这种题我去我也得栽 ... 说得不清不楚的谁知道怎么回答 ...

读取是啥概念 ... 把整个文件读到内存的话 ... 只能加虚拟内存 ...

如果只是要文件中的一部分的话 ... fopen / fseek / fread 一套上去 1T 的文件我也能读 ...
StarBrilliant
2015 年 7 月 9 日
@Sunyanzi 目测是楼主被 file_get_content 坑害了……(笑
pichina
2015 年 7 月 9 日
哈哈,buffer难道非得跟文件一样大。
realpg
2015 年 7 月 9 日
fopen就完了……
难道面试官以为谁都是file_get_content么
lilydjwg
2015 年 7 月 9 日
@Sunyanzi 但是面试官就特别喜欢这种不明不白不清不楚的问题,并且会同时设定一个回答的方向甚至是标答,就像一些游戏里测试心灵契合度一样。
ning1022
2015 年 7 月 9 日
@StarBrilliant
@realpg
@Sunyanzi 我想的是file_get_contents,但是不对,我直接说这个我不会。
dalaomj
2015 年 7 月 9 日
我用php处理过11末泄漏的社工库。虚拟内存、文件 方式操作。效率不到载入内存处理的十分之一。
自己写循环处理数据,效率不到内置函数的十分之一。
nikoukou
2015 年 7 月 10 日
能grep awk 正则出来以后倒入php么?
liuweisj
2015 年 7 月 10 日
一行行读啊....
liuweisj
2015 年 7 月 10 日
变个方式问你说不定就懂了,256MB的内存,把2G的数据库表数据下载导出,这个没问题吧
msg7086
2015 年 7 月 10 日
@dalaomj 目测是操作有问题……
Karblue
2015 年 7 月 10 日
分段读取就是。又没叫你把10G的文件全读进内存中
phpdb
2015 年 7 月 15 日
这道题都没说清楚读10G的文件后要怎么处理。
如果仅仅是读取就用fread限定字节长度,分段循环读取,每次循环读取处理完就unset了,多花点时间,多大的文件都可以读完。
julyclyde
2015 年 7 月 22 日
只有256M的公司你也应聘?
zonghua
2015 年 10 月 1 日
buffer

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/204542

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX