
Eu tenho um script PHP que fornece alguma saída para angular. Esse script é útil para obter informações do script Perl. Estou usando exec()
o comando para chamar os scripts em PHP. Estou conseguindo o que quero, mas o problema é demorado. Estou executando o mesmo script três vezes para criar o array em php. por exemplo:
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);
Como você pode ver, estou executando o mesmo script várias vezes apenas por causa da alteração dos parâmetros.
Pelo primeiro comando estou armazenando report_id
, o segundo comando para armazenar sua posição e o terceiro é para seus nomes completos. Preciso de uma solução para reunir esses três comandos em um. Por favor, ajude a evitar a complexidade do tempo.
Responder1
- Sugiro usar o AWK, ele pode analisar múltiplas regexs e separar os campos automaticamente. É uma linguagem fácil e pequena disponível em todos os Unix, criada especialmente para tais trabalhos.
- A melhor maneira é obter a saída e fazer o processamento com o PHP.executar()retorna a saída em uma matriz de linhas.preg_split()pode fazer o trabalho grep/sed/cut.
- Você pode usar o comando tee para usar a saída de relatórios em vários canais.
- Finalmente, você pode usar um mecanismo de bloqueio personalizado, mas eu não sugiro isso.