谁能给我一些指点关于PHP命令的执行和最佳做法?PHP EXEC建议/替代
林目前正在尝试分析一些的NetBackup数据,但我遇到了相关数据的系统调用返回的巨量的问题。为了减少数据IM的retreiving我做这样的事情量:使用awk来限制数据量
$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();
}
林接收。如果没有它,我最终会收到大约150MB的数据,而且,我得到了一个更容易管理的〜800k数据。
你不需要告诉我,awk的狗屎是讨厌的 - 我已经知道了......但在我砥砺(和我的代码),任何人都可以提出一个替代的利益?
我想的有点像proc_open
,但真的不知道这是怎么回事提供任何好处。
存在着相当大的好处是用'proc_open()'因为你可以在PHP中的时间处理数据一行,并就不需要加载整个800K立刻进入记忆。你可能会更好地使用简单的['popen()'](http://php.net/popen),因为你不需要双向通信。我个人并不认为在这里使用'awk'是错误的,如果它正在做你想做的事 - 在PHP中做同样的工作会更有效率。使用流(来自'proc_open()'/'popen()')还可以使用'fgetcsv()'来检索数组,而不必亲自去做。 – DaveRandom 2012-08-02 09:07:26