与服务器程序定向?

我想编写一个web应用程序来对抗引擎Crafty玩象棋。 我并不陌生于PHP和JavaScript,但必须学习如何与服务器进程交互:Web应用程序和/或(jQuery)ajax如何与运行在服务器上的(linux)程序双向交互?

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

$ / usr / games / crafty

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

狡猾的终端

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

Crafty如何直接与网页交谈,说“我已经计算出另一个变体”或“我已决定移动”等,然后在网页上显示此信息,并让用户提供一些反动,就像在终端中一样。 是不是可以使用一些会话/流/监听器?

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


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

  • 你不想对每个PHP请求开始狡猾,你只想在每个游戏中启动一次
  • 您不希望在请求结束时狡猾地结束
  • 您的移动请求将希望与此已准备好运行的实例进行交互。
  • 所以我会做的是这样的:

  • 使用mkfifo准备一对FIFO - 您可以从PHP或shell中执行此操作
  • 在游戏开始时,运行/usr/games/crafty <stdin.fifo >stdout.fifo 2>stderr.fifo &
  • 为了您的举动,请将一个AJAX PHP请求写入stdin.fifo
  • 对于服务器移动,使用AJAX进行长时间轮询,在服务器端打开stdin.fifo ,然后stream_select()
  • 链接地址: http://www.djcxy.com/p/60699.html

    上一篇: directional with server program?

    下一篇: > C++ backend communication