我有任务在php上编写一些“控制面板”,与基于linux控制台的应用程序,游戏服务器一起工作。 所以,我需要启动,停止(没有问题),并使用应用程序的控制台 - 向它发送字符串命令,并捕获输出。
最好的方法是什么? 我想创建一些.sh脚本/模板,并使用php shell_exec命令调用它 - 这将是最简单的方法。 但是如何使用控制台实现工作 - 发送命令和捕获输出的最佳方法是什么?在运行脚本之前调用“fg”,之后调用“bg”? 使用屏幕切换到它?
最好的方法是什么?
答案 0 :(得分:0)
最好的方法是在后台运行“其他应用程序”作为守护进程,并通过socket(tcp,unix,..)与它通信。
如果你真的开发基于控制台的应用程序,这可以很容易地完成。如果不这样做,并且该应用程序仅从stdin / stdout读取/写入,则可以构建一些其他控制器进程,在套接字上公开这两个I / O通道。
我对此强硬的第一个想法是使用subprocess
模块在后台运行其他进程然后与之通信的Python脚本。然后,让Python脚本打开一个套接字来与PHP应用程序对话(当然你应该能够用你最喜欢的语言来做。我的是Python :)。
答案 1 :(得分:0)
我有一个疯狂的想法。 我可以制作命名管道 - “mkfifo pipename”,然后从shell_exec处理它(例如我可以做“echo quit>> pipename”。
问题是我无法回答具体的最后一个命令,但这太酷了。在这个项目阶段,我只需要向服务器发送命令并捕获控制台输出。 我会考虑更多的时间,但似乎使用命名管道是最简单的解决方案。