誰能給我一些指點關於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