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

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

Angular에 일부 출력을 제공하는 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); 

보시다시피 매개 변수를 변경했기 때문에 동일한 스크립트를 여러 번 실행하고 있습니다.

I store 첫 번째 명령을 사용하면 report_id두 번째 명령은 위치를 저장하는 데 사용되고 세 번째 명령은 전체 이름을 저장하는 데 사용됩니다. 이 세 가지 명령을 하나로 결합하는 솔루션이 필요합니다. 시간 복잡성을 피하도록 도와주세요.

답변1

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

관련 정보