如何获得txt文件中的一行数据? 不是所有人都喜欢那么笨,是因为!文件只能那么读!这是磁盘原理!你就别做梦了!所以大家都如此写,我一直用文本存储数据!你的问题应该看磁盘存储原理你就file,explode这么读吧! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 也许$FD = fopen(...);for($i=0;$i<n;$i++) $str = fgets($FD);$str = chop($str);对于大文件来说可以做得更好一些。 》也许》$FD = fopen(...);》for($i=0;$i<n;$i++)》 $str = fgets($FD);》$str = chop($str);》对于大文件来说可以做得更好一些。在PHP邮件列表中,人家说fgets不是一种有效率处理方式,这样做还不如file整个文件呢?》使用fseek()定位》然后fgets可否举一个例子? 如果你保存文件时强制你的每个记录的大小,比如1K,如果不足1K则结尾用空格填充,那么你用fseek()然后fgets将非常快。fseek($FD,1000*n,SEEK_SET);$content = fread($FD,1000);$content = rtrim($content); 》如果你保存文件时强制你的每个记录的大小,比如1K,如果不足1K则结尾用空格填充,那么你用fseek()然后fgets将非常快。》fseek($FD,1000*n,SEEK_SET);》$content = fread($FD,1000);》$content = rtrim($content);你的意思我懂了,但你是否确定这样的效率会提高?? 我觉得是,假设你有一个100000个记录的文本文件,如果强制记录的话大概是100M,你只要打开文件,然后定位到某个位置,并读取1K大小的数据。时间应该很快,占用内存资源也很少。如果你是用file()方法将文件读到数组中,再读取单个的记录的话,我想,怎么着也不能比上一个方法强吧。而且,你在留言中肯定应该可以存在多行内容吧,用file()方法你需要先对留言进行特殊处理在保存到文件中,而固定记录的话,你只需要添加就行了。但是固定记录对需要经常删除内容的文件有一些弊端,而且相对来说会浪费一些空间。 to langwan:别误解,我说的是用固定记录会浪费空间!如果留言大部分很短,你可以将1K减少为100B也行呀。其实这么说只是针对使用文件保存数据而言,当然最好是用数据库了(在记录数比较多时)。应该允许百花齐放嘛! 呵呵,不许打架。。^_^。我觉得如果文件内容很多的话就用数据库。要不然为什么叫库呢。而且文本文件不理想。如果文件太多往往占远超过文件大小的空间(与簇有关)。10个1MB的文件绝对比100个100KB的文件占的空间小。讲效率就用数据库嘛。 文本数据库的效率的确不高. 除非与很好的数据结构相配合(sigh, 我还没找到很好的相关资料)用fgets对于小文件的效率可能是不高, 但是对于大文件, 用file你就会发现你浪费了大部分时间在读取不需要的东西(特别是需要的内容在前面的时候).这些函数, 都是一些时候我比你快, 另一些时候你比我快的. 不能一棒子打死. 》hhzh426(春之风)我有个想法,我正在思考,不知行不行的通,希望大家指点一下!我想如果真要使用fseek的话,文件a不一定要固定记录,只要我再弄一个文件b,其每一行对应文件a每一行记录的长度,文件b一定会很小,所以对文件b使用file或者fgets就不会有太大的效率影响,而文件a也可以通过fseek很快的找到目标记录。但这个想法的关键应该是fseek到底是如何工作的。这也是我想再问的问题,fseek真的比file或fgets效率更高吗?》langwan(浪湾),zairwolf(zairwolf)对于数据库我也知道效率当然高了,但文本数据的处理更让我容易找到编程的乐趣,这个问题在于研究!我想找出一种可以高效的使用固定文本数量的文本数据结构。》LeeMaRS(小菜虎 - 我要DP!) 兄弟所谈到的问题,我有点不同意,只是出于我个人观点,php这些函数应该不存在这种问题,函数的快慢在同一条件下已经确定,但其受外界影响非常大,其中影响最大的是编程时的数据结构,这正式我想请教大家的。》xizi2002(戏子)nod!希望大家多多指教,多多提不同的观点。 你的那个想法有点儿类似dbase数据表的memo字段,用那个方法当然可以。但是要考虑到效率问题:即你先处理索引信息,然后再定位于实际的记录位置去读取相应的内容,也许会得不偿失。而且,php好象内置了对dbase数据表的支持,我想,如果用这种方法还不如用一个*.dbf数据表来存储数据呢!你认为呢? fseek只是将文件读写指针进行定位,应该是调用操作系统处理文件的底层接口,并不实际读取数据。而fgets应该是从当前位置读取一定数量的内容,应该占用一定的磁盘I/O时间,而file()是将文本文件按行读取到一个数组中,这就应该是一个由编程语言提供的一个高级函数,相对来说,占用的处理时间除了磁盘I/O时间之外应该还有必须的处理程序执行所需要的时间。而实际上文件读取操作中主要的瓶颈应该是磁盘存取速度(如果不涉及到更多的后续处理过程的话。),你读取的内容越多,则存取时间就应该越长,当处理小文件(存取内容相差不大)时,应该不会感觉到有什么问题,但如果文件比较大的话,这种时间的差距应该比较明显。 》hhzh426(春之风)我想处理小的字段也学我的那个想法可能有点得不偿失,但处理大的数据时,应该可以起到一定的效果吧!谈到dbase,小弟没有学过,所以是一窍不通,希望兄台指点一下简单的使用方法。兄台第二段阐述的甚是有理,现在我决定动手实践一下! 实践出真知,你最好设置一下留言的起始位置和长度,那样都不需要计算。不知道dbase?,那么你知道foxpro或者visual foxpro吗,它们用的是*.dbf数据表。 》hhzh426(春之风)foxpro没有了解过,只知道它是数据库软件,它是不是和access差不多,我想使用access数据库,不过好像php默认不支持*.mdb吧? 同一条件下,两个函数的快慢是不一定的 :)客观是磁盘存储原理!为什么不一定?:)呵呵浪湾绕口令!同一条件是同一条件,但是任何状态下的同一条件不是同一条件!所以你应该研究出一条曲线,一条这些函数效率的曲线!客观是存在这样一条曲线!除非你遇到的文本数据永远沿着一条直线!而客观是数据的状态是曲线!呵呵祝你成功!如果成功了告诉我一声!因为浪湾从来没用过php+mysql,我的网站缴费少!:-( 如果你解决了,最大的受益者浪湾耳!===================任何状态下的同一条件不是同一条件! 现在是浪湾讲故事时间:曾经有个很厉害的人,他说:光是波。后来又有个很厉害的人,他说:光嘛?不是波,光是粒子。两种思想在学术界打了起来!爱因斯坦狡猾的说:“说得好,你们的研究都对,光具有“波粒二像性”!世界终于不争吵了!浪湾开始嚷嚷了!fseek,fgets,file,文本数据库具有多像性,哈哈!别吵这个了,聪明人都用!不同地方,用不同的函数!文本就一个地方需要好好的讨论!==============================文本数据库的效率的确不高. 除非与很好的数据结构相配合(sigh, 我还没找到很好的相关资料)==============================为什么找不到很好的相关资料==============================浪湾讲故事时间二:一天浪湾的同学来我这里玩,他问浪,你那些奇形怪状的软件,显示速度不慢呀!你怎么弄的?别的软件弄成这样速度都慢了!算法教教我吧!浪湾对他说:“嗨,容易的很,没有任何算法,用的最笨的办法!用长头发的脑袋算出400多个轮廓点,放到数组里。计算机这个不长头发的脑袋就好了,它不用算了!所以就快了!同学疑惑的说:那?,哎呀你那什么那,每一个不同的形状我都各自算做了一个数组,这么傻瓜的做法,能不快吗?===============================总结:针对你要做的脚本程序,设计最直接的最符合客观的数据结构,就是最快的!无法通用所有客观,让所有客观都好用的理论上不存在!===============================如果你想穿最舒服的衣服,只能找人量审定做,这个问题!太。===============================通用的办法理论上不好找呵呵,百花齐放,不断创新! 》langwan(浪湾) nod!看了兄台的介绍!我感到以前我的确太可以去追求了!做事情还是要针对的好! mysql中的中文是乱码,但在PHP中echo显示却是正常的中文。 文本框空格问题 访问一个php页面,但是页面整个直接弹出一个下载的窗口了 大家开发php项目用什么工具 请问大家“PHP中表单变量如何传递?”(谢谢指教) 求论坛镜像方案~!!!!!! linux+php+apache 安装了sendmail且启动了,为何邮件发送不出去,望高手指教 %u811a%u672c 这样的中文转换过来的字符,应该用什么函数实现? 50分养养眼 需要大家帮一个忙 用户太多,老被踢出,咋办? phpmyadmin里如何管理不同用户的数据库
$FD = fopen(...);
for($i=0;$i<n;$i++)
$str = fgets($FD);
$str = chop($str);
对于大文件来说可以做得更好一些。
》$FD = fopen(...);
》for($i=0;$i<n;$i++)
》 $str = fgets($FD);
》$str = chop($str);
》对于大文件来说可以做得更好一些。在PHP邮件列表中,人家说fgets不是一种有效率处理方式,
这样做还不如file整个文件呢?》使用fseek()定位
》然后fgets可否举一个例子?
fseek($FD,1000*n,SEEK_SET);
$content = fread($FD,1000);
$content = rtrim($content);
》fseek($FD,1000*n,SEEK_SET);
》$content = fread($FD,1000);
》$content = rtrim($content);
你的意思我懂了,但你是否确定这样的效率会提高??
100M,你只要打开文件,然后定位到某个位置,并读取1K大小的数据。时间应该很快,占用内存资源也很少。
如果你是用file()方法将文件读到数组中,再读取单个的记录的话,我想,怎么着也不能比上一个方法强吧。
而且,你在留言中肯定应该可以存在多行内容吧,用file()方法你需要先对留言进行特殊处理在保存到文件中,而固定记录的话,你只需要添加就行了。
但是固定记录对需要经常删除内容的文件有一些弊端,而且相对来说会浪费一些空间。
别误解,我说的是用固定记录会浪费空间!
如果留言大部分很短,你可以将1K减少为100B也行呀。
其实这么说只是针对使用文件保存数据而言,当然最好是用数据库了(在记录数比较多时)。
应该允许百花齐放嘛!
我觉得如果文件内容很多的话就用数据库。要不然为什么叫库呢。
而且文本文件不理想。如果文件太多往往占远超过文件大小的空间(与簇有关)。10个1MB的文件绝对比100个100KB的文件占的空间小。
讲效率就用数据库嘛。
兄台第二段阐述的甚是有理,现在我决定动手实践一下!
不知道dbase?,那么你知道foxpro或者visual foxpro吗,它们用的是*.dbf数据表。
foxpro没有了解过,只知道它是数据库软件,它是不是和access差不多,
我想使用access数据库,不过好像php默认不支持*.mdb吧?
客观是磁盘存储原理!
为什么不一定?:)呵呵浪湾绕口令!
同一条件是同一条件,但是任何状态下的同一条件不是同一条件!
所以你应该研究出一条曲线,一条这些函数效率的曲线!
客观是存在这样一条曲线!除非你遇到的文本数据永远沿着一条直线!
而客观是数据的状态是曲线!
呵呵祝你成功!如果成功了告诉我一声!
因为浪湾从来没用过php+mysql,我的网站缴费少!:-( 如果你解决了,最大的受益者浪湾耳!
===================
任何状态下的同一条件不是同一条件!
曾经有个很厉害的人,他说:光是波。后来又有个很厉害的人,他说:光嘛?不是波,光是粒子。两种思想在学术界打了起来!爱因斯坦狡猾的说:“说得好,你们的研究都对,光具有“波粒二像性”!世界终于不争吵了!
浪湾开始嚷嚷了!fseek,fgets,file,文本数据库具有多像性,哈哈!
别吵这个了,聪明人都用!不同地方,用不同的函数!
文本就一个地方需要好好的讨论!
==============================
文本数据库的效率的确不高. 除非与很好的数据结构相配合(sigh, 我还没找到很好的相关资料)
==============================为什么找不到很好的相关资料
==============================
浪湾讲故事时间二:
一天浪湾的同学来我这里玩,他问浪,你那些奇形怪状的软件,显示速度不慢呀!你怎么弄的?别的软件弄成这样速度都慢了!算法教教我吧!
浪湾对他说:“嗨,容易的很,没有任何算法,用的最笨的办法!用长头发的脑袋算出400多个轮廓点,放到数组里。计算机这个不长头发的脑袋就好了,它不用算了!所以就快了!同学疑惑的说:那?,哎呀你那什么那,每一个不同的形状我都各自算做了一个数组,这么傻瓜的做法,能不快吗?
===============================
总结:针对你要做的脚本程序,设计最直接的最符合客观的数据结构,就是最快的!无法通用所有客观,让所有客观都好用的理论上不存在!
===============================
如果你想穿最舒服的衣服,只能找人量审定做,这个问题!太。
===============================
通用的办法理论上不好找
呵呵,百花齐放,不断创新!
nod!
看了兄台的介绍!我感到以前我的确太可以去追求了!
做事情还是要针对的好!