¿Cómo puedo invocar un script de shell externo (o alternativamente un script PHP externo) desde PHP y obtener su ID de proceso dentro del mismo script?Invocar script de shell externo desde PHP y obtener su ID de proceso
Respuesta
$command = 'yourcommand' . ' > /dev/null 2>&1 & echo $!; ';
$pid = exec($command, $output);
var_dump($pid);
Si quieres hacer esto herramientas estrictamente el uso de PHP le da, en lugar de Unix-specific wizardry, puede hacerlo con proc_open
y proc_get_status
, a pesar de la necesidad de aprobar una especificación descriptor en proc_open
hace que sea desagradable verbosa de empleo:
<?php
$descriptorspec = [
0 => ['pipe', 'r'],
1 => ['pipe', 'w'],
2 => ['pipe', 'w']
];
$proc = proc_open('yourcommand', $descriptorspec, $pipes);
$proc_details = proc_get_status($proc);
$pid = $proc_details['pid'];
echo $pid;
Esta debería ser la respuesta aceptada. –
Para una solución de plataforma cruzada, visita symfony/process.
use Symfony\Component\Process\Process;
$process = new Process('sleep 100');
$process->start();
var_dump($process->getPid());
Después de instalar symfony/process
con el compositor (composer require symfony/process
), puede que tenga que actualizar la información de carga automática con composer dump-autoload
y luego requerir la carga automática con require __DIR__ . '/vendor/autoload.php';
.
Observe también que puede obtener un PID de ejecutando el proceso solamente. Consulte the documentation para obtener detalles de la API.
- 1. ¿Cómo puedo invocar un script PHP desde Perl?
- 2. Llamar al programa externo desde python y obtener su salida
- 3. ¿Cómo obtener el ID del proceso del nombre del proceso?
- 4. obtener el nombre del proceso desde el proceso id (win32)
- 5. Cómo ejecutar un comando de shell desde un script php
- 6. Redireccionando la salida del comando ps, obteniendo el ID del proceso y matando ese proceso usando el script de shell
- 7. Proceso de eliminación en Shell Script
- 8. ¿Cómo obtener el ID de proceso actual?
- 9. Entrada desde el script de shell
- 10. Obtener referencia al objeto de subproceso desde su ID
- 11. Invocar solicitud SOAP desde el comando de shell
- 12. ¿Obtener uso de CPU en script de shell?
- 13. Shell script generando un proceso después de un retraso
- 14. Cómo escribir datos en el proceso STDIN del proceso externo?
- 15. Publicar una descarga en bitbucket desde un script de shell
- 16. Obtener la configuración de Apache desde el script PHP
- 17. Cómo leer información plist (id del paquete) desde un script de shell
- 18. ¿Cómo iniciar y ejecutar un script externo en segundo plano?
- 19. Cómo ejecutar un script de shell de Unix desde Windows
- 20. Shell llamada script desde Android.mk, salida estándar y error
- 21. obtener el directorio actual de script php symlink'd y no real script php
- 22. Quiere invocar un comando linux shell desde Java
- 23. Ejecutor de shell asincrónico en PHP
- 24. shell script y SQL resultados
- 25. ¿Cómo ejecutar el script de shell desde LaTeX?
- 26. script de shell para encontrar el nombre de archivo de su ruta
- 27. Prueba de script Shell
- 28. plantillas de script de shell
- 29. Importación de funciones desde un script de shell
- 30. Diferencia entre ID de grupo de proceso y ID de trabajo en UNIX
¿Cuál es el significado de ">/dev/null 2> & 1 & echo $ !;" – andho
significa 'enviar toda la salida al dispositivo nulo, lo que significa que toda la salida estará disponible en stdout y echo ps simplemente echo el pid, que es capturado por el script –
Esto también significa que el comando se ejecutará en segundo plano (que sería lo que desea si quiere el pid), y así su script php no esperará a que el comando termine ejecutando – Tofandel