2012-06-28 46 views
5

Utilizo exec() para ejecutar el comando, ya sea Linux o Windows.PHP ejecutar comando y salida de registro sin esperar

¿Cómo ejecutas un comando, linux y windows, y registras el resultado sin esperar?

sé para Linux, a no esperar a la salida: command* > /dev/null 2>/dev/null &

Y para iniciar la sesión de salida para Linux: command* > /path/to/log.txt 2>/path/to/error.txt

Cómo haría usted para la tala y se establece a fondo en un comando? ¿Cómo se verían las ventanas también?

+1

Puede ejecutar() incluyendo la salida de redireccionamiento a un archivo, y luego leer el archivo a través de PHP más adelante. – ametren

+1

El '&' al final pone las cosas en segundo plano. Pero eso no funciona en Windows, eso es Linux. – hakre

+0

En Windows, creo que solo usa 'start' – ametren

Respuesta

12

En Linux que puede hacer:

exec('command* > /dev/null 2>/dev/null &'); 

En Windows, puede hacer:

pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r')); 

Ambos ejemplos apague la salida y los errores, los que van a /dev/null (Linux) o NUL (ventanas), que significa que están almacenados "en ninguna parte".

Puede reemplazar estos con rutas válidas en su sistema.

En Linux, un & al final lo coloca en segundo plano. En Windows, esto es más complicado y necesita start para invocar el proceso y cmd para permitir la redirección de las transmisiones.

+0

Quiero registrarlo también – user1105430

+2

Puede dirigir la salida a un archivo y luego abrir /! Feof el archivo de registro –

+0

+1 exactamente lo que estaba pensando – ametren

Cuestiones relacionadas