1. ホーム
  2. php

PHPでリアルタイムに出力されるプロセスを実行する

2023-11-19 21:01:33

質問

私は、リアルタイムでその出力を返すWebページ上でプロセスを実行しようとしています。例えば、私が「ping」プロセスを実行すると、新しい行を返すたびに私のページを更新する必要があります(今、私がexec(コマンド、出力)を使用するとき、私は-cオプションを使用して、私のウェブページで出力を見るためにプロセスが終了するまで待つことを余儀なくされています)。phpでこれを行うことは可能ですか?

私はまた、誰かがページを離れるときにこの種のプロセスを殺す正しい方法が何であるか疑問に思っています。ping」プロセスの場合、私はまだシステムモニターで実行中のプロセスを見ることができます(何が意味をなすのでしょうか)。

どのように解決するのですか?

これは私のために働いた。

$cmd = "ping 127.0.0.1";

$descriptorspec = array(
   0 => array("pipe", "r"),   // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),   // stdout is a pipe that the child will write to
   2 => array("pipe", "w")    // stderr is a pipe that the child will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
echo "<pre>";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "</pre>";