如果不考虑客户端的贷款问题,那应该使用ajax了。很好的例子啊几十M的XML,怎么说还是太大了,尽量不处理这样的东西。效率比处理数据库还慢

解决方案 »

  1.   

    你现在弄个十几M的TXT,打开看看什么效果,然后决定要不要用十几M的XML!
      

  2.   

    呵呵,这个xml不是现在制作出来的,是一些历史数据
      

  3.   

    大文件处理不可能全读入内存中再处理 ,你如果想提高查找速度,保存文件时就把ID按顺序排列,可以按下面方法来查找, 
    申明变量 总记录数lngCount,目前记录lngThis,偏移量lngOffset,要找的ID lngFindID ,当前ID  , lngThisID
    1先读出总记录数lngCount   ,  lngOffset=lngCount /2 ,lngThis = 0 
    2 lngThis=lngThis + lngOffset
    3 如果 lngThis< 1 或 lngThis>lngCount  没有ID为lngFindID的数据
    3 读入第(lngThis )条,得到lngThisID
    4如果 lngThisID < lngFindID    那么     lngOffset = lngOffset / 2 
    5如果 lngThisID > lngFindID 那么 lngOffset =-1* ( lngOffset / 2)
    6如果 lngThisID =lngFindID 那么,OK,你要找的就是这条数据
    7 重复第二步
    我以前做过,不过是用VB做的,只能给你思路,不好意思,  如果数据排序是乱的,你只能读一条比较一条,
      

  4.   

    小文件怎么处理,大文件就怎么处理吧。我曾经导出过一个 mysql 的表,一百多兆, phpmyadmin 根本导入不了。
    最后 fopen ,然后一行一行的读.
    一行一行的 mysql_query 导入,速度并不慢。
    不要想着去 什么内存映射, 分块读入之类的问题, 这些技术优化不用你做,而且
    你用php也不一定做得了。 那些是当你使用 C/C++ 语言的时候要考虑的问题。php 的函数都是 c 语言写的。 他们在写这些函数的时候都已经考虑过对超大文件进行
    内存映射,分块读入之类的算法优化了,我们直接拿着用就是。
    附上一段   file_get_contents 的注释和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE。 file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。 
    手册里面已经写得很清楚,已经帮你用内存映射技术来增强性能了
      

  5.   

    对于大文件,我们能做而且最有效的就是设置  set_time_limit。别让脚本超时就ok
      

  6.   

    分块、拼装(如果没有上G的话)
    上G:内存中映射;
    不同的操作系统有不同的支持底线,如果要拼装几十G我看就不现实了。
      

  7.   

    才几十MB,米点影响...
    在LINUX下,几百MB的日志文件打开和打开1MB的没多少差异
      

  8.   

    文件的大小本身不是问题, file_get_contents象上面说的一样本身使用了内存映射,不用操心内容的问题.
    关键是文件的检索速度慢, 那么解决办法无非是
    1. 转入数据库处理
    2. 自己做个索引文件