php exec建议/备选方案


php exec suggestions/alternatives

有人能给我一些关于PHP命令执行和最佳实践的建议吗?

我目前正在尝试解析一些网络备份数据,但我遇到了与系统调用返回的大量数据有关的问题。为了减少我检索的数据量,我正在做这样的事情:

$awk_command = "awk -F, '{print $1'",'"$2'",'"$3'",'"$4'",'"$5'",'"$6'",'"$7'",'"$9'",'"$11'",'"$26'",'"$32'",'"$33'",'"$34'",'"$35'",'"$36'",'"$37'",'"$38'",'"$39'",'"$40}'";
exec("sudo /usr/openv/netbackup/bin/admincmd/bpdbjobs -report -M $master_name -all_columns | $awk_command", $get_backups, $null);
foreach ($get_backups as $backup_detail)
    {
    process_the_data();
    write_data_to_db();
    }

我使用awk来限制要接收的数据量。如果没有它,我最终会收到大约1.5亿字节的数据,有了它,我会得到更易于管理的大约80万字节的数据。

你不需要告诉我这个混蛋很恶心——我已经知道了。。。但为了改善我自己(和我的代码),有人能提出一个替代方案吗?

我在考虑类似proc_open的东西,但真的不确定这是否会带来任何好处。

使用exec将数据写入文件,而不是将其全部读取到脚本中。

exec("sudo /usr/openv/netbackup/bin/admincmd/bpdbjobs -report -M $master_name -all_columns | $awk_command > /tmp/output.data");

然后使用任何内存有效的方法来分部分读取文件。

看看这里:在PHP 中读取文件的内存占用最少的方法