buscando una solución para evitar la ejecución múltiple de comandos de Linux en un script php

buscando una solución para evitar la ejecución múltiple de comandos de Linux en un script php

Tengo un script PHP que proporciona algunos resultados en angular. Ese script es útil para obtener la información del script Perl. Estoy usando exec()un comando para llamar a los scripts en PHP. Obtengo lo que quiero, pero el problema lleva mucho tiempo. Ejecuto el mismo script tres veces para crear la matriz en php. p.ej:

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 puede ver, estoy ejecutando el mismo script varias veces solo debido al cambio de parámetros.

Con el primer comando estoy almacenando report_id, el segundo comando para almacenar su posición y el tercero es para sus nombres completos. Necesito una solución para agrupar estos tres comandos en uno. Por favor ayuda a evitar la complejidad del tiempo.

Respuesta1

  1. Sugiero usar AWK, puede analizar múltiples expresiones regulares y separa los campos automáticamente. Es un lenguaje sencillo y pequeño disponible en todos los Unix, creado especialmente para este tipo de trabajos.
  2. Una mejor manera es obtener el resultado y realizar el procesamiento con PHP.ejecutivo()devuelve la salida en una serie de líneas.preg_split()puede hacer el trabajo grep/sed/cut.
  3. Puede utilizar el comando tee para utilizar la salida de informes en varias canalizaciones.
  4. Finalmente, puedes utilizar un mecanismo de bloqueo personalizado, pero no lo recomiendo.

información relacionada