我有一个非常大的文件,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/