
Angular に出力を提供する PHP スクリプトがあります。このスクリプトは、Perl スクリプトから情報を取得するのに役立ちます。exec()
コマンドを使用して、PHP でスクリプトを呼び出しています。必要なことは得られていますが、問題は時間がかかることです。PHP で配列を作成するために、同じスクリプトを 3 回実行しています。例:
exec("/usr/bin/reports -h -r -t ".$this->name." | grep -o '^\S*' | sed '1 d'",$report_id);
exec("/usr/bin/reports -h -r -t ".$this->name." | grep -oP '(?<= ).*' | sed '1 d'",$titles);
exec("/usr/bin/reports -h -r -n ".$this->name." | grep -oP '(?<= ).*' | sed '1 d'",$fullnames);
ご覧のとおり、パラメータを変更するためだけに同じスクリプトを複数回実行しています。
最初のコマンドで を保存しreport_id
、2 番目のコマンドで位置を保存し、3 番目のコマンドでフルネームを保存します。これらの 3 つのコマンドを 1 つにまとめるソリューションが必要です。時間の複雑さを回避するためにご協力ください。
答え1
- AWK を使用することをお勧めします。AWK は複数の正規表現を解析し、フィールドを自動的に分離できます。AWK はすべての Unix で使用できる簡単で小さな言語で、特にこのような作業のために作成されています。
- より良い方法は、出力を取得して PHP で処理することです。実行()出力を行の配列で返します。preg_split()grep/sed/cut ジョブを実行できます。
- tee コマンドを使用すると、レポートの出力を複数のパイプで使用できます。
- 最後に、カスタマイズされたロック機構を使用することもできますが、お勧めしません。