PHPスクリプトでLinuxコマンドを複数回実行するのを防ぐソリューションを探しています。

PHPスクリプトでLinuxコマンドを複数回実行するのを防ぐソリューションを探しています。

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); 

ご覧のとおり、パラメータを変更したため、同じスクリプトを複数回実行しています。

I store 最初のコマンドを使用すると、2 番目のコマンドが場所を保存するために使用され、3 番目のコマンドがreport_idフルネームを保存するために使用されます。これら3つのコマンドを1つにまとめるソリューションが必要です。時間の複雑さを避けるのに役立ちます。

ベストアンサー1

  1. 複数の正規表現を解析し、フィールドを自動的に区別できるAWKを使用することをお勧めします。これはすべてのUnixで動作し、この種の操作のために特別に作成されたシンプルで小さな言語です。
  2. より良いアプローチは、PHPを使用して出力を取得して処理することです。実装する()出力を行配列として返します。preg_split()grep/sed/cut 操作を完了できます。
  3. teeコマンドを使用して、複数のパイプラインでレポート出力を使用できます。
  4. 最後に、カスタムロック機構を使用できますが、お勧めしません。

おすすめ記事