PHP 스크립트에서 Linux 명령을 여러 번 실행하지 않는 솔루션을 찾고 있습니다.

PHP 스크립트에서 Linux 명령을 여러 번 실행하지 않는 솔루션을 찾고 있습니다.

각도에 일부 출력을 제공하는 PHP 스크립트가 있습니다. 해당 스크립트는 Perl 스크립트에서 정보를 얻는 데 유용합니다. exec()PHP에서 스크립트를 호출하기 위해 명령을 사용하고 있습니다 . 원하는 것을 얻고 있지만 문제는 시간이 많이 걸립니다. PHP에서 배열을 생성하기 위해 동일한 스크립트를 세 번 실행했습니다. 예:

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두 번째 명령은 위치를 저장하고 세 번째 명령은 전체 이름을 저장하는 것입니다. 이 세 가지 명령을 하나로 구성하는 솔루션이 필요합니다. 시간 복잡성을 피하도록 도와주세요.

답변1

  1. AWK를 사용하는 것이 좋습니다. 여러 정규식을 구문 분석하고 필드를 자동으로 구분할 수 있습니다. 이러한 작업을 위해 특별히 제작된 쉽고 작은 언어는 모든 Unix에서 사용할 수 있습니다.
  2. 더 좋은 방법은 출력을 얻고 PHP로 처리하는 것입니다.실행()라인 배열로 출력을 반환합니다.preg_split()grep/sed/cut 작업을 수행할 수 있습니다.
  3. tee 명령을 사용하면 여러 파이프의 보고서 출력을 사용할 수 있습니다.
  4. 마지막으로 사용자 정의된 잠금 메커니즘을 사용할 수 있지만 권장하지는 않습니다.

관련 정보