提高从 ZIP 读取 CSV 文件的性能?

I'l*_*ack 0 php fgetcsv

您知道如何通过从 zip 文件读取 CSV 文件来提高性能吗?

首先打开zip文件,然后将数据放入内存中,然后通过读取fgetcsv

$zip = new ZipArchive();
if ($zip->open($fileName)) {
    $info = $zip->statIndex(0);
    $fp = $zip->getStream($info['name']);
    if(!$fp) exit("failed\n");

    while (!feof($fp)) {
        $contents .= fread($fp, 2);
    }
        fclose($fp);
        $zip->close();
}

$temp = fopen("php://memory", "rw");
fwrite($temp, $contents);
fseek($temp, 0);

while (($data = fgetcsv($temp, 0)) !== false) {
  ....
}
Run Code Online (Sandbox Code Playgroud)

E_p*_*E_p 5

快速检查 php 手册表明这应该有效:

<?php

    $fp = fopen('zip://test.zip#test', 'r'); // test  name of file in archive
    if (!$fp) {
        exit("cannot open\n");
    }
    while (($data = fgetcsv($fp, 0)) !== false) {
        ...
    }

    fclose($fp);
Run Code Online (Sandbox Code Playgroud)