¿Qué es el proceso de fondo y por qué los necesitamos?
Un proceso que se ejecuta en segundo plano (es decir, en segundo plano) y sin la intervención del usuario se denomina proceso en segundo plano. El registro de errores/depuración, la supervisión de cualquier sistema con grafana o kibana, la notificación al usuario, la programación de trabajos y la publicación de algunos datos son ejemplos típicos de procesos en segundo plano. El proceso en segundo plano suele ser un proceso secundario creado por un proceso de control para procesar una tarea informática. Después de la creación, el proceso secundario se ejecutará por sí solo, realizando la tarea independientemente del estado del proceso principal.
Hay muchas maneras de ejecutar un trabajo en segundo plano. Crontab, subprocesos múltiples en java, rutinas go en golang son ejemplos de tales casos.
Para ejecutar un proceso en ubuntu, simplemente escribimos un comando en la terminal. Por ejemplo, para ejecutar un archivo PHP, usamos el siguiente comando:
php filename.php
En PHP, no podemos ejecutar directamente ningún trabajo de proceso en segundo plano, incluso si el trabajo principal finaliza. Antes de saber cómo ejecutar el proceso en segundo plano, sepamos cómo ejecutar comandos de terminal desde un script o programa PHP. Para lograr esta funcionalidad podemos usar las funciones exec y shell_exec en PHP.
Un comando de muestra para ejecutar cualquier comando con PHP es:
PHP
<?php shell_exec(sprintf('%s > /dev/null 2>&1 &', "echo 4")); ?>
Estos son los puntos importantes del código anterior:
- La salida (STDOUT) del script debe dirigirse a un archivo. /dev/null indica que no estamos registrando la salida.
- Los errores (STDERR) también deben ser dirigidos a un archivo. 2>&1 significa que STDERR se redirige a STDOUT y, por lo tanto, al nirvana.
- El & final le dice al comando que se ejecute en segundo plano .
Podemos verificar el estado de cualquier proceso en ejecución con el comando ps, por ejemplo:
ps -ef
Entonces, para ejecutar cualquier proceso en segundo plano desde PHP, simplemente podemos usar la función exec o shell_exec para ejecutar cualquier comando de terminal y en ese comando, simplemente podemos agregar & al final para que el proceso pueda ejecutarse en segundo plano.
A continuación se muestra la implementación del enfoque anterior:
PHP
<?php // Function to run process in background function run($command, $outputFile = '/dev/null') { $processId = shell_exec(sprintf( '%s > %s 2>&1 & echo $!', $command, $outputFile )); print_r("processID of process in background is: " . $processId); } // "sleep 5" process will run in background run("sleep 5"); print_r("current processID is: ".getmypid()); ?>
processID of process in background is: 19926 current processID is: 19924
Publicación traducida automáticamente
Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA