proc_terminate
杀死一个proc_open打开的进程
函数名称:proc_terminate()
适用版本:PHP 4 >= 4.3.0, PHP 5, PHP 7
函数描述:proc_terminate()函数用于终止一个由proc_open()函数创建的进程。
语法:bool proc_terminate(resource $process, int $signal = 15)
参数:
返回值:如果成功终止进程,则返回true;否则返回false。
示例:
$descriptorspec = array(
0 => array("pipe", "r"), // 标准输入,子进程从此管道中读取数据
1 => array("pipe", "w"), // 标准输出,子进程向此管道中写入数据
2 => array("file", "/tmp/error-output.txt", "a") // 标准错误,写入到一个文件
);
$process = proc_open('php -r "echo \'Hello, World!\';"', $descriptorspec, $pipes);
// 等待一段时间后终止进程
sleep(3);
proc_terminate($process);
// 读取子进程的输出
echo stream_get_contents($pipes[1]);
// 关闭管道和进程资源
fclose($pipes[0]);
fclose($pipes[1]);
proc_close($process);
上述示例中,我们使用proc_open()函数创建了一个子进程,该子进程执行了一个简单的PHP命令来输出"Hello, World!"。然后,我们使用proc_terminate()函数在等待3秒后终止了该子进程。最后,我们通过stream_get_contents()函数读取了子进程的输出,并关闭了相关的管道和进程资源。
请注意,proc_terminate()函数只是发送一个信号给进程,但无法保证立即终止进程。如果需要确保进程立即终止,可以使用proc_close()函数代替proc_terminate()函数。