Php 缓存文件读取是否会加快处理速度?

Php 缓存文件读取是否会加快处理速度?,php,performance,file,caching,optimization,Php,Performance,File,Caching,Optimization,我有一个从文件中读取和处理数百万行的代码,该文件的运行时间仍然比我想要的长 以下是主循环: while( $hash = $this->readLineFromFile($table) ) { $hash = $this->process($hash); if ($hash) $this->store($table, $hash); } 因此,每个循环从文件(硬盘上)中读取一行内容,对其进行处理并存储在内存中 我的问题是: 为了加快代码速

我有一个从文件中读取和处理数百万行的代码,该文件的运行时间仍然比我想要的长

以下是主循环:

while( $hash = $this->readLineFromFile($table) ) {
     $hash = $this->process($hash);
     if ($hash) $this->store($table, $hash);         
}
因此,每个循环从文件(硬盘上)中读取一行内容,对其进行处理并存储在内存中

我的问题是:

  • 为了加快代码速度,同时将几行代码读入内存,然后对它们进行处理,这样的努力值得吗

  • 如果是,如何确定一次读取的最佳行数

  • PHP中是否有一种快速方便的方法可以从文件中读取指定数量的行

  • 更新

    按照Eugen Rieck的建议,我将使用

    $result = file_get_contents($file, null, null, $offset, $maxlen);
    $array = explode('\n', $result);
    
    然后迭代
    $array
    ,除非到达最后一个数组条目,在这种情况下,我需要重复读取
    $arrayNew
    ,将
    $arrayNew
    中的最后一个条目与
    $arrayNew
    中的第一个粘合在一起,处理它,然后继续处理
    $arrayNew
    的其余部分


    我觉得有点不舒服,有人知道这样做的好代码示例吗?

    你检查过了吗,你真的是磁盘绑定的吗?例如,从一个实验室进行测试ramdisk@EugenRieck基于我的假设。它在那里的运行速度也比我的本地SDD慢。有没有一个简单的方法来检查它?如果你正在阅读整个文件,你可以试试。@Passenger这个文件很大-差不多500MB,但我只有300MB可用。所以我不能一次读完它。我必须一行一行地处理和压缩它,然后我才能存储它。试着
    fread()
    将其分成约20-100MB的块,然后处理!