Web应用程序与服务器程序双向交互?

我想写一个Web应用程序,以发挥狡猾的引擎下棋。 我并不陌生于PHP和JavaScript,但必须学习如何与服务器进程交互:Web应用程序和/或(jQuery)ajax如何与运行在服务器上的(linux)程序双向交互?

目前我正在开发(Apache)本地主机。 Crafty安装在我的Ubuntu PC上。 这个着名的国际象棋引擎没有GUI,它通过命令在terminal运行

$ / usr / games / crafty

所以你可以对它下棋,甚至看到它的计算:

在终端狡猾

我可以通过使用函数proc_open()或exec()使PHP运行Crafty,并且我发现大多数文档声明输出stream应该是一个文件..但是我想我不想要这样的设置,因为那么网页应该是constanty轮询该文件(如通过ajax),看看是否有一些新的数据被追加,对吗?

Crafty如何直接与网页交谈,说“我计算了另一个变化”或“我决定了一个动作”等等,然后在网页上显示这个信息,并让用户给出一些反动,就像在terminal中一样。 是不是可以使用一些会议/stream/监听器?

我根本没有线索,有谁能指出我正确的方向?

    我建议你使用fifos和&运算符 – 这是为什么:

    • 你不想在每个PHP请求上开始狡猾,你想每个游戏只启动一次
    • 您不希望在请求结束时狡猾地结束
    • 您的移动请求将希望与此已准备好运行的实例进行交互。

    所以我会做的是这样的:

    • 准备一对使用mkfifo的FIFO – 你可以从PHP或从壳做到这一点
    • 在游戏开始时,运行/usr/games/crafty <stdin.fifo >stdout.fifo 2>stderr.fifo &
    • 为了您的举动,请将一个AJAX PHP请求写入stdin.fifo
    • 对于服务器移动使用AJAX进行长时间轮询,在服务器端打开stdin.fifo ,然后stream_select()