【发布时间】:2011-11-21 03:07:04
【问题描述】:
我有一个关于 php 和打开文件的问题
PHP 有不止一种打开文件的功能:
file_get_contents()
fopen()
file()
我的问题与性能有关。在我的服务器上,我必须打开文件,然后检查内容,根据需要进行一些修改,然后重新保存。
我想尽快做出这些改变
哪一个更好地打开文件(无论大小)性能明智?意义;为什么要优先使用其中一个?
【问题讨论】:
标签: php performance file
我有一个关于 php 和打开文件的问题
PHP 有不止一种打开文件的功能:
file_get_contents()
fopen()
file()
我的问题与性能有关。在我的服务器上,我必须打开文件,然后检查内容,根据需要进行一些修改,然后重新保存。
我想尽快做出这些改变
哪一个更好地打开文件(无论大小)性能明智?意义;为什么要优先使用其中一个?
【问题讨论】:
标签: php performance file
file_get_contents() 和 file() 都将整个文件读入内存——区别在于一个返回一个字符串,另一个返回一个数组。
对于小型(ish)文件,这可能不会对您造成太大的性能影响。
对于较大的文件,这肯定会产生巨大的影响。如果目标文件的大小为 20MB,并且您需要检查文件中某个已知距离处的特定数据段,则 fopen() 然后寻找该已知位置以获取您需要的数据会快得多,沿着几个数量级。
当然,20MB 只是我凭空得出的一个任意数字,但考虑到任意大的文件可能会超过服务器对 PHP 环境施加的资源使用限制。
【讨论】: