Php Web应用程序与服务器程序双向交互?
我想编写一个web应用程序,巧妙地与引擎对弈。我对PHP和javascript并不陌生,但必须学习如何与服务器进程交互:web应用程序和/或(jQuery)ajax如何与服务器上运行的(linux)程序进行双向交互 现在我正在(Apache)本地主机上开发。Crafty安装在我的Ubuntu PC上。这个著名的国际象棋引擎没有GUI,它通过命令在终端上运行 $/usr/游戏/狡猾 所以你可以和它下棋,甚至可以看到它的计算结果: 我可以使用函数proc_open()或exec()让Crafty通过PHP运行,我发现的大多数文档都说明输出流应该是一个文件。。但我想我不希望这样的设置,因为这样网页就应该不断地轮询该文件(如通过ajax),以查看是否添加了一些新数据,对吗 如何巧妙地直接与网页对话,说“我已经计算了另一个变化”或“我已经决定了一个动作”等,然后在网页上显示此信息,并让用户进行一些反击,就像在终端中一样。难道不能使用一些会话/流/侦听器吗Php Web应用程序与服务器程序双向交互?,php,ajax,linux,command-line,bidirectional,Php,Ajax,Linux,Command Line,Bidirectional,我想编写一个web应用程序,巧妙地与引擎对弈。我对PHP和javascript并不陌生,但必须学习如何与服务器进程交互:web应用程序和/或(jQuery)ajax如何与服务器上运行的(linux)程序进行双向交互 现在我正在(Apache)本地主机上开发。Crafty安装在我的Ubuntu PC上。这个著名的国际象棋引擎没有GUI,它通过命令在终端上运行 $/usr/游戏/狡猾 所以你可以和它下棋,甚至可以看到它的计算结果: 我可以使用函数proc_open()或exec()让Crafty通
我一点也不知道,有人能给我指出一个正确的方向吗?我建议您使用FIFO和
&
操作符-原因如下:
- 您不希望在每个PHP请求上都启动crafty,您只希望在每个游戏中启动它一次
- 你不想在你的请求结束时有狡猾的结局
- 您的移动请求将希望与此allready运行实例交互
- 使用
准备一对fifo-您可以从PHP或shell中执行此操作mkfifo
- 在游戏开始时,运行类似于
/usr/games/crafty stdout.fifo 2>stderr.fifo&
- 对于您的移动,将AJAX PHP请求写入
stdin.fifo
- 对于服务器移动,使用AJAX进行长轮询,在服务器端打开
,然后stdin.fifo
stream\u select()