我有一个非常大的文件,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 - PHP exec vs在Linux终端中执行同一命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21743579/

10-14 12:38
查看更多