buscando solução para evitar múltiplas execuções de comandos linux em script php

buscando solução para evitar múltiplas execuções de comandos linux em script php

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

  1. 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.
  2. 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.
  3. Você pode usar o comando tee para usar a saída de relatórios em vários canais.
  4. Finalmente, você pode usar um mecanismo de bloqueio personalizado, mas eu não sugiro isso.

informação relacionada