我有一个游戏服务器应用程序(Java),并希望让PHP直接与它通信。例如,发送一个返回用户列表的命令(来自PHP)。从游戏服务器等踢一个特定的玩家。
如何将Java与PHP连接?我想到了一些事情,这些都有用吗?
哪种方法最好,我将如何实施该方法?
答案 0 :(得分:4)
我试图解决的问题的确切条件对我来说并不清楚。但是,让我建议几个场景,希望至少有一个场景能够解决你的问题。
首先,我假设您的Java代码和PHP代码都驻留在Web服务器上,这意味着它们可以使用标准的http协议执行。在php中,这只是意味着你有一个.php网页,它可以使用标准的$ _REQUEST对象和标准输出方法(例如header和echo)。类似地,在java中,这意味着您的代码驻留在servlet或jsp中,并使用标准的请求和响应对象。
我将在下面讨论在java和php之间共享全局数据的方法,但暂时不要担心。让我们讨论3种可能的通信场景:
1)您的游戏正在浏览器(或其他使用http与您的Web服务器通信的程序)中运行,并希望单独调用java和php。在这种情况下,您的游戏代码只需调用相应的URL,使用标准的GET或POST方法传入参数,并处理代码返回的响应文本。但是,我怀疑这种情况不能回答你的问题。
2)如果你想让你的java调用你的php,那么你可以使用java.net类(如URL)来调用你的php页面。 java教程对如何执行此操作有很好的解释:http://docs.oracle.com/javase/tutorial/networking/urls/index.html
3)同样,如果你想让你的php调用你的java,有几种可能性。最常见的是CURL php扩展。这里有一个很好的讨论如何做到这一点:How to send a GET request from PHP? BTW,上面提到的Java Bridge使用这种方法。
好的,现在我们如何在java和php之间共享数据?如果不需要在代码之间共享全局数据,那么,如上所述,您可以使用http传递请求参数并发回文本输出响应(使用json,xml或您喜欢的任何其他内容)。但是,如果需要共享全局数据,那就有点复杂了。你需要使用服务器文件系统来共享数据,因为java和php之间没有内存共享(至少我知道)。由于java和php都可以读写文件,因此编写代码没有问题。但是,存在并发问题。如果有几段代码可以在同一时间访问和修改全局数据,那么您必须担心,否则数据更改可能会丢失或数据可能会被破坏。因此,如上所述,最简单的解决方案是使用数据库,因为数据库软件会为您处理并发性。否则,你必须有某种文件锁定机制,这是可行的,但可能不值得努力。
答案 1 :(得分:2)
您的Java服务器如何通信? TCP套接字?无论通信方法是什么,我建议您使用其首选通信方法使您的PHP应用程序直接与Java服务器连接。
如果服务器确实通过TCP进行通信,那么肯定有TCP库和通过PHP使用TCP的教程,例如http://www.devshed.com/c/a/PHP/Socket-Programming-With-PHP/
我建议不要使用其他解决方案(尽管它们不是错误),因为它们会增加您需要维护的不必要的复杂性。例如,您的第一个选项(HTTP中介),这是您最喜欢的想法,将导致您在HTTP服务器中编写相同的TCP(?)接口代码,而您可以在PHP代码中编写它并跳过完全是HTTP服务器项目。
有关您的设置的更多详细信息可能会有所帮助,但这是我如何解决问题的一般概念。
答案 2 :(得分:2)
最简单的解决方案是通过MySQL数据库连接PHP和Java。他们俩都支持它。
如果您需要发送命令,有两种方法
答案 3 :(得分:1)