次のコードを使用して、proc_open でプロセスを開き、ハンドルとパイプをファイルに保存します。
$command = "COMMAND_TO_EXECUTE";
$descriptors = 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("file", "error-output.txt", "a") // stderr is a file to write to
);
$pipes = array();
$processHandle = proc_open($command, $descriptors, $pipes);
if (is_resource($processHandle)) {
$processToSave = array(
"process" => $processHandle,
"pipes" => $pipes
);
file_put_contents("myfile.bin", serialize($processToSave) );
}
次に、このファイル ハンドルをファイルから取得する必要があります。次のコードを使用しました。
$processArray = unserialize(file_get_contents("myfile.bin"));
$processHandle = $processArray["process"];
$pipes = $processArray["pipes"];
しかし、ファイルから取得した後に $processHandle と $pipes の var_dump を出力すると、リソースまたはプロセスではなく整数が取得されますが、なぜですか??
var_dump($processHandle) -> int(0)
var_dump($pipes) - > array(2) { int(0), int(0) }
もちろん、この時点でパイプを閉じようとすると、エラー、リソースが必要、整数が指定されます。
どうすればこれを機能させることができますか? (注:これは私が探している解決策です)
しかし、別の方法として、プロセスの pid を取得し、この pid を使用してプロセスを停止または強制終了したり、他の処理を行ったりすることもできますが、パイプについてはどうでしょうか。プロセスから/へエラーを読み書きまたは保存するにはどうすればよいですか?
ありがとうございました