
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
- 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.
- 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.
- Puede utilizar el comando tee para utilizar la salida de informes en varias canalizaciones.
- Finalmente, puedes utilizar un mecanismo de bloqueo personalizado, pero no lo recomiendo.