我想写一个Web应用程序,以发挥狡猾的引擎下棋。 我并不陌生于PHP和JavaScript,但必须学习如何与服务器进程交互:Web应用程序和/或(jQuery)ajax如何与运行在服务器上的(linux)程序双向交互?
目前我正在开发(Apache)本地主机。 Crafty安装在我的Ubuntu PC上。 这个着名的国际象棋引擎没有GUI,它通过命令在terminal运行
$ / usr / games / crafty
所以你可以对它下棋,甚至看到它的计算:
我如何build立一个双向的SSH隧道
如何使用单独的进程读取/写入到Linux伪terminal,但没有分叉?
我可以通过使用函数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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。