在php中使用后台运行的控制台应用程序的最佳方法是什么?

时间:2010-12-02 21:55:10

标签: php linux shell console

我有任务在php上编写一些“控制面板”,与基于linux控制台的应用程序,游戏服务器一起工作。 所以,我需要启动,停止(没有问题),并使用应用程序的控制台 - 向它发送字符串命令,并捕获输出。

最好的方法是什么? 我想创建一些.sh脚本/模板,并使用php shell_exec命令调用它 - 这将是最简单的方法。 但是如何使用控制台实现工作 - 发送命令和捕获输出的最佳方法是什么?在运行脚本之前调用“fg”,之后调用“bg”? 使用屏幕切换到它?

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

最好的方法是在后台运行“其他应用程序”作为守护进程,并通过socket(tcp,unix,..)与它通信。

如果你真的开发基于控制台的应用程序,这可以很容易地完成。如果不这样做,并且该应用程序仅从stdin / stdout读取/写入,则可以构建一些其他控制器进程,在套接字上公开这两个I / O通道。

我对此强硬的第一个想法是使用subprocess模块在​​后台运行其他进程然后与之通信的Python脚本。然后,让Python脚本打开一个套接字来与PHP应用程序对话(当然你应该能够用你最喜欢的语言来做。我的是Python :)。

答案 1 :(得分:0)

我有一个疯狂的想法。 我可以制作命名管道 - “mkfifo pipename”,然后从shell_exec处理它(例如我可以做“echo quit>> pipename”。

问题是我无法回答具体的最后一个命令,但这太酷了。在这个项目阶段,我只需要向服务器发送命令并捕获控制台输出。 我会考虑更多的时间,但似乎使用命名管道是最简单的解决方案。