Php 在windows下检测正在运行的进程(如果未运行则启动)
下面是我用来检查进程是否在windows下运行的代码,在本例中是calc.exe 如果任务列表中找不到calc.exe,我将尝试启动它 若calc.exe未启动,则在运行php脚本时打开,但页面保持循环,直到我关闭calc.exe 我错在哪里 谢谢你的帮助Php 在windows下检测正在运行的进程(如果未运行则启动),php,Php,下面是我用来检查进程是否在windows下运行的代码,在本例中是calc.exe 如果任务列表中找不到calc.exe,我将尝试启动它 若calc.exe未启动,则在运行php脚本时打开,但页面保持循环,直到我关闭calc.exe 我错在哪里 谢谢你的帮助 // START SHOW TASKLIST // Get Tasklist exec("tasklist 2>NUL", $task_list); //print_r($task_list); echo '<pre>';
// START SHOW TASKLIST
// Get Tasklist
exec("tasklist 2>NUL", $task_list);
//print_r($task_list);
echo '<pre>'; print_r($task_list); echo '</pre>';
// END SHOW TASKLIST
// Service running
$kill_pattern = '~(calc)\.exe~i';
// Create array
$task_list = array();
exec("tasklist 2>NUL", $task_list);
foreach ($task_list AS $task_line) {
if (preg_match($kill_pattern, $task_line, $out)) {
echo "=> Detected: ".$out[1]."\n !\n";
$is_running = '1';
break;
}
}
if ($is_running == '1') {
echo 'Nothing to do';
exit;
} else {
// open calc.exe
exec("calc.exe");
exit;
}
//开始显示任务列表
//获取任务列表
exec(“任务列表2>NUL”,$task_list);
//打印(任务列表);
回声';打印(任务列表);回声';
//结束显示任务列表
//服务运行
$kill\u pattern='~(calc)\.exe~i';
//创建数组
$task_list=array();
exec(“任务列表2>NUL”,$task_list);
foreach($task\列为$task\行){
if(预匹配($kill\u模式,$task\u行,$out)){
回波“=>检测到:“..out[1]”\n!\n”;
$is_running='1';
打破
}
}
如果($is_running=='1'){
呼应“无事可做”;
出口
}否则{
//打开calc.exe
exec(“calc.exe”);
出口
}
请使用此代码避免脚本挂起
改变
pclose(popen('start /B cmd /C "calc.exe >NUL 2>NUL"', 'r'));
与
那么你的问题是什么?你读过这部分吗页面保持在循环中,直到我关闭calc.exe。我错在哪里?嗯。也许你想保留“页面”(不管是什么),或者你也不想保留它?我们不知道您是否保留了vague.PHP通常在web服务器环境中执行的内容。在这种情况下,让它打开另一个以交互方式工作的流程(“我关闭…”)毫无意义。那么你的情况是什么,你不觉得你应该在问题中具体说明吗?我们猜不到它…清楚地说:如果一个程序是用这个函数启动的,为了让它在后台继续运行,程序的输出必须重定向到一个文件或另一个输出流。否则会导致PHP挂起,直到程序执行结束。效果很好。谢天谢地
pclose(popen('start /B cmd /C "calc.exe >NUL 2>NUL"', 'r'));