题目:php读取2G的文件,内存只有512M,问应该用什么方法读取?

解决方案 »

  1.   

    文件被php 打开时 不都是一次性读入内存吗?能说的详细点吗?怎么分段取?
      

  2.   

    //一次一行,多用于文本文件
    $fp = fopen('filename', 'r');
    while($buf = fgets($fp)) {
      //处理代码
    }//一次一块,多用于二进制文件
    $fp = fopen('filename', 'rb');
    while(! feof($fp)) {
      $buf = fread($fp, 512);
      //处理代码
    }两种方式可以混用
      

  3.   

    我估计我理解有点错误。我原以为只要fopen了文件 就一次性将文件读入内存了。
      

  4.   

    嗯,这个题目,不是太了解面试官想考什么....
    其实后面那个512M不是太有关系...在老32位机上,如果php编译时没有加入大文件支持,是读不了>2G的文件的,无论何种方式.因为文件指针是32位整型,最大到2G..有兴趣的google "large file support"
      

  5.   

    谁用PHP 打开2g的文件 神马玩意儿 出题目的无奈了
      

  6.   

    //一次一行,多用于文本文件
    $fp = fopen('filename', 'r');
    while($buf = fgets($fp)) {
      //处理代码
    }//一次一块,多用于二进制文件
    $fp = fopen('filename', 'rb');
    while(! feof($fp)) {
      $buf = fread($fp, 512);
      //处理代码
    }两种方式可以混用