PHP exec 与在 Linux 终端中执行相同命令

标签 php linux csv sed exec

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

相关文章:

javascript - Codeigniter - 如何将 JSON 传递到 Assets 文件夹中的 JS 文件?

c++ - 无法从端口 2368 (Linux) C 接收 UDP 流

java - 如何在java中对csv文件的内容进行排序

Ruby:数组的数组到哈希数组

php - 在文本框中显示 š

php - 在 postLoad 中加载 Doctrine 实体

c - tcsendbreak() 中的持续时间单位是什么?

C++ sizeof 返回数组的错误值

PHP csv文件在mysql中上传

php - curl 错误: Operation timed out