working shell_exec not example ejemplos ejecutar desde consola php external-process

not - shell_exec php ejemplos



Invoque el script de shell externo desde PHP y obtenga su ID de proceso (3)

¿Cómo puedo invocar un script de shell externo (o, alternativamente, un script PHP externo) desde el propio PHP y obtener su ID de proceso dentro del mismo script?


Para una solución multiplataforma, echa un vistazo a 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 composer (el composer require symfony/process ), es posible que necesites actualizar la información composer dump-autoload automática con el require __DIR__ . ''/vendor/autoload.php''; composer dump-autoload y luego requerir la carga automática con require __DIR__ . ''/vendor/autoload.php''; require __DIR__ . ''/vendor/autoload.php''; .

Tenga en cuenta también que puede obtener PID de un proceso en ejecución solamente. Consulte la documentación para obtener detalles de la API.


Si quiere hacer esto estrictamente usando las herramientas que le proporciona PHP, en lugar de la magia específica de Unix , puede hacerlo con proc_open y proc_get_status , aunque la necesidad de pasar una especificación de descriptor a proc_open hace que sea desagradable proc_open utilizar:

<?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;


$command = ''yourcommand'' . '' > /dev/null 2>&1 & echo $!; ''; $pid = exec($command, $output); var_dump($pid);