所以要开始;我试图通过PHP启动一个节点应用程序。我创建了一个脚本,可以检查节点应用程序是否正在运行,关闭它并启动它。但是我在使用PHP的屏幕时遇到了一些麻烦。通过PHP在屏幕会话内启动节点的问题
现在,在我继续之前,我不应该这样做的意见不会起作用,我需要通过PHP启动它,因为它与网站一起工作,并且我希望我们的客户能够更改设置,这将重新启动应用程序(除非您有其他想法)。
我目前使用的命令:
screen -dmS NODEJS node main.js 121016
现在,我可以启动节点,并得到输出(只要我添加process.exit某处所以PHP /节点不会永远运行)。我已经在正确的目录还,我使用这个代码来运行它:
$out = shell_exec('screen -dmS NODEJS node main.js 121016');
var_dump($out);
但它不是创建画面会话。我也曾尝试:
$proc = proc_open('screen -dmS NODEJS node main.js 121016', $this->pipe_spec, $pipes);
我还试图用exec
和反引号,但我相当肯定的反引号是一样的了shell_exec?
无论如何,我完全失去了,我不知道我还能做什么。我不希望节点持续运行,这就是为什么当我单击管理器中的保存(在php中)时它会启动它,然后在它完成任务时关闭/停止自身。
任何帮助都会有很长的路要走,我花了好几个小时试图解决它,但是我没有得到任何地方......谢谢。
为什么你甚至试图使用屏幕? –
只需使用'exec('node main.js &');' – Philipp
@JonStirling我正在使用屏幕,以便在出现任何问题时连接到程序,因为它与网站一起运行。如果它们允许'shell_exec,那么它允许我发送它的命令也stdin?因为我需要发送命令也! –