在mac操作系统上的php中杀死.exec()之后的节点进程


Killing a node process after .exec() in php on mac OS

我在一个PHP页面上有以下代码,它为我执行一个节点命令

<?php
if (isset($_POST['button'])) { exec('/usr/local/bin/node DroneNotes/Dronestream/server.js'); } ?>
<form method="POST">
<p>
<input type="hidden" name="button" value="1">
<input type="submit" value="Start Video">
</p>
</form>

这个命令对我来说执行得很好,但这个过程对我来说只是挂起而没有停止。我想知道我可以通过创建另一个按钮点击来以某种方式终止这个过程吗?或者可以在一段时间后添加一些东西来结束它吗?

我不认为为每个客户端启动一个服务器是个好主意。。。如果您在同一时间内有100个客户端,您将启动100次您的server.js?你考虑过使用differents端口吗

为了回答您的问题:您必须创建一个脚本shell,它启动您的服务器,并在一段时间后杀死它

这里有一个很好的例子来完成您的工作Bash脚本在给定的超时后杀死一个子进程

检查这个问题,在进程结束时退出Node.js;

如何在Node.js 中退出

或者,您可以使用"forever"手动启动和停止node.js服务器;

forever start DroneNotes/Dronestream/server.js
forever stop DroneNotes/Dronestream/server.js