方法,以加快读取文件内容的速度


Method to speed up reading the contents of a file

在一个脚本中,我正在使用ftp从远程服务器提取csv。我将该文件保存在本地,然后打开该文件。我循环遍历文件中与某个值匹配的所有内容。如果匹配,脚本可以继续。

足够的说话。让我们展示一些代码…

$filename = 'ftp://.....';
$localCsv = '/tmp/'.date('Ymd').'.csv';
if (!file_exists($localCsv)) {
    $content = file_get_contents($filename);
    file_put_contents($localCsv, $content);
}

现在我们已经创建了文件。我们可以继续循环

$handle = fopen($localCsv, "r");
while(!feof($handle)) {
  $rows[] = fgets($handle);
}
fclose($handle);
$results = array();
foreach ($rows as $rid => $row) {
    $columns = explode("'t", $row);
    $results[$columns[2]] = $columns;
}
if (array_key_exists($searchValue, $results)) {
    ... Continue script ...
}

这个方法只有一个很小的问题。它太慢了,几乎是倒着走的

这些都烤在一起,也许这样更快?

$handle = fopen($localCsv, "r");
$results = array();
while(!feof($handle)) {
    $columns = explode("'t", fgets($handle));
    $results[$columns[2]] = $columns;
    if ($columns[2] == $searchValue) {
        //SEARCH HIT
    }
}
fclose($handle);

如果这不起作用,你可以尝试PHP中

特定于csv的方法。