Question

Comment puis-je appeler un script shell externe (ou encore un script PHP externe) de PHP lui-même et obtenir son numéro d'identification de processus dans le même script?

Était-ce utile?

La solution

$command =  'yourcommand' . ' > /dev/null 2>&1 & echo $!; ';

$pid = exec($command, $output);

var_dump($pid);

Autres conseils

Si vous voulez faire strictement l'utilisation des outils PHP vous donne, plutôt que Unix spécifiques wizardry , vous pouvez faire donc avec proc_open et proc_get_status , bien que la nécessité de passer une spécification de descripteur dans proc_open fait désagréablement bavard à utiliser:

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

À une solution multi-plateforme, consultez symfony / processus .

use Symfony\Component\Process\Process;
$process = new Process('sleep 100');
$process->start();
var_dump($process->getPid());

, vous devrez peut-être mettre à jour les informations autoloading Après avoir installé symfony/process avec le compositeur (composer require symfony/process) avec composer dump-autoload puis exiger la autoload avec require __DIR__ . '/vendor/autoload.php';.

Notez également que vous pouvez obtenir PID d'un en cours d'exécution processus uniquement. Reportez-vous à la documentation pour plus de détails de l'API.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top