有人可以给我一些关于PHP命令执行和最佳实践的指示吗?
我目前正在尝试解析一些netbackup数据,但我遇到的问题与系统调用返回的大量数据有关。为了减少数据量,我正在做这样的事情:
$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来限制接收的数据量。如果没有它,我最终会收到大约150mb的数据,有了它,我可以获得更加可管理的~800k数据。
你不需要告诉我awk狗屎很讨厌 - 我知道已经......但是为了改善自己(以及我的代码),任何人都可以提出替代方案吗?
我在考虑类似proc_open
之类的东西,但我真的不确定这是否会带来任何好处。
答案 0 :(得分:1)
使用exec将数据写入文件,而不是将其全部读入脚本。
exec("sudo /usr/openv/netbackup/bin/admincmd/bpdbjobs -report -M $master_name -all_columns | $awk_command > /tmp/output.data");
然后使用任何内存有效的方法来读取部分文件。