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