我有一个非常大的文件,5GB csv 文件,我想使用 PHP exec 方法向用户显示。
我尝试使用 linux 命令读取某些行号(第 21 至 30 行)而不是所有行:
mycprogram largefile.csv | sed -n "21,30p;30q"
输入命令后,终端将立即返回确切的行数。但是,当我在 php exec 中使用类似的命令时,它将等待第一部分 (mycprogram largefile.csv
) 完全加载到内存中(这需要很长时间),然后再进入 sed
获取我想要的行号。 php 代码类似于:
$cmd = "mycprogram largefile.csv | sed -n '21,30p;30q'";
exec($cmd, $output);
是否知道我可以使用 PHP 方法从终端及其输出中获取确切的内容,而无需等待 mycprogram
完全加载?
谢谢 怎么办
最佳答案
命令mycprogram
是否会在largefile.csv
上逐行转换某些内容?如果是这样,则改为
$cmd = "sed -n '21,30p;30q' largefile.csv > temp; mycprogram temp" ;
关于PHP exec 与在 Linux 终端中执行相同命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21743579/