PHP与Java程序通信

PHP与Java程序通信,java,php,Java,Php,我们公司遇到了一个问题,我正在努力找到最好的解决方案 最近购买了一种软件,它利用一个Java程序来获取某批货物的税款。需要这样做的站点是用PHP4编写的。我如何在两者之间进行沟通 有人建议使用文件进行通信,但速度非常慢,因为每次都需要重新编译Java程序。那么,最好的解决方案是什么: 创建一个多线程Java服务器,并使用PHP发送/接收信息 其他类型的文件写入方法 一些我甚至不知道的酷东西 提前谢谢 编辑: 我理解web服务的重要性,但为什么这比使用基于多线程套接字的java服务器更有效?唯一连

我们公司遇到了一个问题,我正在努力找到最好的解决方案

最近购买了一种软件,它利用一个Java程序来获取某批货物的税款。需要这样做的站点是用PHP4编写的。我如何在两者之间进行沟通

有人建议使用文件进行通信,但速度非常慢,因为每次都需要重新编译Java程序。那么,最好的解决方案是什么:

  • 创建一个多线程Java服务器,并使用PHP发送/接收信息
  • 其他类型的文件写入方法
  • 一些我甚至不知道的酷东西
  • 提前谢谢

    编辑:
    我理解web服务的重要性,但为什么这比使用基于多线程套接字的java服务器更有效?唯一连接到这个web服务的是我的PHP程序,而不是其他程序。对于我这项简单的任务来说,这似乎有点过分了。我弄错了吗?若然,原因为何?谢谢。

    将Java程序包装在Web服务中,并从PHP调用它。您甚至可以在Web服务中使用缓存来优化性能。

    由于您使用的是PHP4,您可能只需要在封闭网络上或在感兴趣的机器上设置一个tomcat服务器,并让它与servlet通信,这样,您就不必编写多线程服务器和创建通信接口

    如果您可以升级,此页面还有两个可能感兴趣的其他选项:

    为什么不将信息转储到数据库中,偶尔从数据库中读取一些计划作业

    您始终可以使用Quercus,它允许您在TomcatServlet容器中运行PHP。

    看看

    Quercus是Caucho技术的PHP语言的快速、开源、100%Java实现


    但我从未使用过它,

    Web服务就是答案。这是一个很好的例子。您的问题正是web服务走到最前沿的原因——无法正常通信的系统之间的通信


    web服务本质上要做的是在PHP和Java系统之间发送XML。您必须为这两者建立一个接口,这在upstart中可能会更困难,但稍后您将获得好处。无论哪种情况,它都比在服务器上读写文件快得多。磁盘I/O是任何服务器上的主要瓶颈。

    Web服务是优雅的解决方案。但在许多情况下,我发现一个快速而肮脏的解决方案非常实用:启动一个使用轻量级通信协议进行通信的Java服务器(没有像Web服务中的XML这样的重量级内容)-示例:。写操作是一个非常轻的客户端,它从命令行获取参数并将输出写入控制台。客户端可以是java,甚至可以是其他语言,比如C++(Apache节约支持)。然后使用PHP或从PHP调用客户机


    这不是一个我会推荐用于生产的解决方案,但它对于原型设计非常有用。快速、肮脏、灵活且极其温和的学习曲线(如果您已经在Java进程之间使用了轻量级的通信)。

    我可能会错过一些东西,但是如果您的Java程序输出所需的值,您就不能使用exec()从php启动Java程序。

    使用from sourceforge.net。它成熟、快速且易于安装。

    我认为不可能重新编译PHP服务器,也不可能升级?关于编辑,如果使用基于多线程套接字的java服务器,开销是您将实现自己的RPC,而HTTP是一个已建立的协议。您可以在HTTP之上使用XML,XML可以在两者之间轻松生成和解析。或者,您可以使用SOAP,它位于XML over HTTP之上,这保证了您将要使用的API。使用更高级别的API可以避免重新发明一些轮子。我强烈建议不要使用PHP/Java桥,因为它会给配置和正常工作带来很多麻烦。而且,它的速度非常慢。它是实验性的,所以有风险,但是,它是另一种选择。我认为servlet的想法是最简单的,因为它听起来像是一点点来回的数据。我将对此进行签名。WebServices将灵活地为您实现这一点。它确实是最可行的解决方案。这还将在组件之间创建松散耦合,允许您在不影响另一方的情况下升级或更改任何一方+1尽管你可以这样做——如果他们需要接近实时的信息,以设定的时间间隔运行计划作业会给系统带来各种各样的麻烦。当然,问题是执行bc需要5秒钟,要包含这么多类文件。花了一些时间使用PHP/Java桥,我真的不同意这一点。您测试的旧java扩展()不再可用。这一页留作参考。