php服务器能运行java吗_将PHP与Java服务器接口

我有一个游戏服务器应用程序(Java),并希望PHP与之直接通信。 例如,发送命令(从PHP)返回用户列表。 从游戏服务器等踢出特定玩家

如何将Java与PHP交互? 我已经想到了几件事,其中任何一项都可以吗?

Java游戏服务器运行其他服务(例如HTTP服务器)以进行远程控制(在另一个端口上)

PHP和Java进行通信。 数据库-例如 Java检查表中要执行的命令

Java和PHP都连接到将两者接口的附加服务

Java将(套接字等)连接到服务器

PHP连接到服务器

服务器以两种方式处理流量

哪种方法最好,我将如何实施该方法?

我想解决的问题的确切条件尚不清楚。但是,让我提出一些方案,希望其中至少一种可以解决您的问题。

首先,我假设您的Java代码和php代码都位于Web服务器上,这意味着它们可以使用标准的HTTP协议执行。在php中,这只是意味着您拥有一个.php网页,可以使用标准的$ _REQUEST对象和标准的输出方法(例如标头和echo)。同样,在Java中,这意味着您的代码位于servlet或jsp中,并使用标准的请求和响应对象。

我将在下面讨论在java和php之间共享全局数据的方法,但是暂时不要担心。让我们讨论三种可能的通信方案:

1)您的游戏正在浏览器(或使用http与您的网络服务器进行通信的其他程序)中运行,并且想要分别调用java和php。在这种情况下,您的游戏代码只需使用标准的GET或POST方法调用适当的url来传递参数,并处理代码返回的响应文本。但是,我怀疑这种情况不能回答您的问题。

2)如果您希望Java调用php,则可以使用java.net类(例如URL)来调用php页面。 Java教程对此做了很好的解释:http://docs.oracle.com/javase/tutorial/networking/urls/index.html

3)同样,如果您希望PHP调用Java,则有几种可能。最通用的一种是CURL php扩展名。这里有一个关于如何执行此操作的很好的讨论:如何从PHP发送GET请求?顺便说一句,上面提到的Java Bridge使用这种方法。

好的,那么现在我们如何在java和php之间共享数据?如果不需要在代码之间共享全局数据,则如上所述,您可以使用http传入请求参数并发送回文本输出响应(使用json,xml或其他您喜欢的东西)。但是,如果存在需要共享的全局数据,则要复杂一些。您需要使用服务器文件系统来共享数据,因为java和php之间没有内存共享(至少我知道)。由于java和php均可读取和写入文件,因此编写代码没有问题。但是,存在并发问题。如果可能有几段代码完全同时访问和修改全局数据,那么您就不必担心,因为否则可能会丢失数据更改或损坏数据。因此,如上所述,最简单的解决方案是使用数据库,因为数据库软件会为您处理并发问题。否则,您必须具有某种可行的文件锁定机制,但可能不值得付出努力。

最简单的解决方案是例如通过MySQL数据库连接PHP和Java。他们俩都支持它。

如果您需要发送命令,则有两种方法

在PHP中-将命令存储到DB。在Java应用中,请检查循环(或使用timer或...)是否在数据库中有某些命令

创建一个基于SOAP的非常简单的界面(AFAIK也有Java中的SOAP库),然后通过该界面发布命令。 (但是,仅使命令进行SOAP通信,可以通过DB服务器来简化和更快地完成对DB的任何列表或更改)

您的Java服务器如何通信? TCP套接字?无论采用哪种通信方式,我都建议您使用其首选的通信方式来使您的PHP应用程序直接与Java服务器连接。

如果服务器确实通过TCP进行通信,则肯定会有TCP库和通过PHP使用TCP的教程,例如http://www.devshed.com/c/a/PHP/Socket-Programming-With-PHP/

我建议不要使用其他解决方案(尽管它们还不错),因为它们会增加不必要的复杂性,您需要维护它们。例如,您的第一个选择(HTTP中介)是我最喜欢的想法,它会导致您在HTTP服务器内部编写相同的TCP(?)接口代码,而您只需将其编写在PHP代码中,然后跳过完全是HTTP服务器项目。

有关您的设置的更多详细信息可能会有所帮助,但这是我如何解决此问题的一般思路。

您唯一需要维护的就是您的代码...因此,更多的代码=更多的维护,在这种情况下,基于TCP / IP的自己的协议最糟糕

SergeS-我不明白。 您是在说一个全新的项目作为"协议中介"(也就是"您的代码")更容易维护并且代码更少?

不,我不得不说,已经有成千上万的复杂协议在服务之间进行接口,例如SOAP,所以当您可以在Java和PHP上简单地构建SOAP服务时,为什么要构建自己的代码(必须维护)?

PHP Java桥:

在Zend中

PHP Java桥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值