比如,读取数据库后不写入硬盘,直接弹出下载框
这个时候,服务器是怎样处理的?
假如10G数据,难道让其占有10G内存,然后供浏览器一点一点下载,下载一点释放一点?

解决方案 »

  1.   

    缓存当然不可能无限大,可能它只有那么几Mb,假如它有2Mb,那你下载的文件每下载2Mb就会往硬盘里写入这2Mb,一般都会在浏览器的临时文件夹。各种浏览器,或下载工具,都是这个原理,它不能实时的去写,这样对磁盘IO操作过于频繁,无论对你的系统资源消耗和硬盘都没好处。这个缓存的大小,你也可以去自己设置。各种下载工具里面都提供了此设置。
      

  2.   

    要读一点发一点,你要是一下读10G就down机了。
      

  3.   

    这样的吧:
    fp=fopen(file,r);
    sock=socket套接字
    while(fp){
    fread(fp,buf);
    fwrite(sock,buf);
    }
    fclose(fp);
    close(sock);