php快速读取超⼤excel,PHP如何读取超⼤excel⽂件,划重点
了
⽂讲的是php读取超⼤⽂件实现例⼦, 实现⽅法: 1. 直接采⽤file函数来操作 注: 由于 file函数是⼀次性将所有内容读⼊内存,⽽php为了防⽌⼀些写的⽐较糟糕的程序占⽤太多的内存⽽导致系统内存不⾜,使服务器出现宕机,所以默认情况下 限制只能最⼤使⽤内存16M
操作⽅法
01
php如何运行代码实现⽅法:1. 直接采⽤file函数来操作注: 由于 file函数是⼀次性将所有内容读⼊内存,⽽php为了防⽌⼀些写的⽐较糟糕的程序占⽤太多的内存⽽导致系统内存不⾜,使服务器出现宕机,所以默认情况下 限制只能最⼤使⽤内存16M,这是通过php.ini⾥的memory_limit = 16M 来进⾏设置,这个值如果设置-1,则内存使⽤量不受限制.
我机器是2个G的内存,当按下F5运⾏时,系统直接变灰,差不多20分钟后才恢复过来,可见将这么⼤的⽂件全部直接读⼊内存,后果是多少严重,所以不在万不得以,memory_limit这东西不能调得太⾼,否则只有打电话给机房,让reset机器了.
下⾯是⼀段⽤file来取出这具⽂件最后⼀⾏的代码.整个代码执⾏完成耗时 116.9613 (s).
02
2.直接调⽤linux的tail命令来显⽰最后⼏⾏在linux命令⾏下,可以直接使⽤tail -n 10 access.log很轻易的显⽰⽇志⽂件最后⼏⾏,可以直接⽤php来调⽤tail命令,执⾏php教程代码如下.整个代码执⾏完成耗时 0.0034 (s)
03
3. 直接使⽤php的fseek来进⾏⽂件操作这种⽅式是最为普遍的⽅式,它不需要将⽂件的内容全部读⼊内存,⽽是直接通过指针来操作,所以效率是相当⾼效的.在使⽤fseek来对⽂件进⾏操作时,也有多种不同的⽅法,效率可能也是略有差别的,下⾯是常⽤的两种⽅法.⽅法⼀:⾸先通过fseek到⽂件的最后⼀位EOF,然后最后⼀⾏的起始位置,取这⼀⾏的数据,再次⼀⾏的起始位置,再取这⼀⾏的位置,依次类推,直到到了$num⾏。实现代码如下整个代码执⾏完成耗时 0.0095 (s)
04
⽅法⼆ :还是采⽤fseek的⽅式从⽂件最后开始读,但这时不是⼀位⼀位的读,⽽是⼀块⼀块的读,每读⼀块数据时,就将读取后的数据放在⼀个buf⾥,然后通过换⾏符(n)的个数来判断是否已经读完最后$num⾏数据.实现代码如下整个代码执⾏完成耗时 0.0009(s).
05
⽅法三:整个代码执⾏完成耗时 0.0003(s)
好了,以上就是⼤致内容了,(END)
声明:该⽂观点仅代表作者本⼈,天晴资讯⽹系信息发布平台,仅提供信息存储空间服务。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论