V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ning1022
V2EX  ›  PHP

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

  •  
  •   ning1022 · Jul 9, 2015 · 5717 views
    This topic created in 3948 days ago, the information mentioned may be changed or developed.

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

    19 replies    2015-10-01 00:40:58 +08:00
    loveyu
        1
    loveyu  
       Jul 9, 2015 via Android
    用标准的文件打开方式就行了
    em70
        2
    em70  
       Jul 9, 2015 via Android
    把虚拟内存设置到20G
    maskerTUI
        3
    maskerTUI  
       Jul 9, 2015
    加钱加配置
    StarBrilliant
        4
    StarBrilliant  
       Jul 9, 2015   ❤️ 8
    一般解决方法:1楼
    小清新解决方法:2楼
    2B解决方法:3楼
    Sunyanzi
        5
    Sunyanzi  
       Jul 9, 2015
    琢磨了一下 ... 这种题我去我也得栽 ... 说得不清不楚的谁知道怎么回答 ...

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

    如果只是要文件中的一部分的话 ... fopen / fseek / fread 一套上去 1T 的文件我也能读 ...
    StarBrilliant
        6
    StarBrilliant  
       Jul 9, 2015
    @Sunyanzi 目测是楼主被 file_get_content 坑害了……(笑
    pichina
        7
    pichina  
       Jul 9, 2015
    哈哈,buffer难道非得跟文件一样大。
    realpg
        8
    realpg  
    PRO
       Jul 9, 2015
    fopen就完了……
    难道面试官以为谁都是file_get_content么
    lilydjwg
        9
    lilydjwg  
       Jul 9, 2015   ❤️ 1
    @Sunyanzi 但是面试官就特别喜欢这种不明不白不清不楚的问题,并且会同时设定一个回答的方向甚至是标答,就像一些游戏里测试心灵契合度一样。
    ning1022
        10
    ning1022  
    OP
       Jul 9, 2015
    @StarBrilliant
    @realpg
    @Sunyanzi 我想的是file_get_contents,但是不对,我直接说这个我不会。
    dalaomj
        11
    dalaomj  
       Jul 9, 2015
    我用php处理过11末泄漏的社工库。虚拟内存、文件 方式操作。效率不到载入内存处理的十分之一。
    自己写循环处理数据,效率不到内置函数的十分之一。
    nikoukou
        12
    nikoukou  
       Jul 10, 2015
    能grep awk 正则出来以后倒入php么?
    liuweisj
        13
    liuweisj  
       Jul 10, 2015
    一行行读啊....
    liuweisj
        14
    liuweisj  
       Jul 10, 2015
    变个方式问你说不定就懂了,256MB的内存,把2G的数据库表数据下载导出,这个没问题吧
    msg7086
        15
    msg7086  
       Jul 10, 2015
    @dalaomj 目测是操作有问题……
    Karblue
        16
    Karblue  
       Jul 10, 2015
    分段读取就是。又没叫你把10G的文件全读进内存中
    phpdb
        17
    phpdb  
       Jul 15, 2015
    这道题都没说清楚读10G的文件后要怎么处理。
    如果仅仅是读取就用fread限定字节长度,分段循环读取,每次循环读取处理完就unset了,多花点时间,多大的文件都可以读完。
    julyclyde
        18
    julyclyde  
       Jul 22, 2015
    只有256M的公司你也应聘?
    zonghua
        19
    zonghua  
       Oct 1, 2015
    buffer
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2454 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 05:13 · PVG 13:13 · LAX 22:13 · JFK 01:13
    ♥ Do have faith in what you're doing.