如何在PHP和Java程序之间进行通信?
我正在开发一个web应用程序,它经常需要运行计算密集型查询,查询结果存储在一个单独的表中。使用MySQL,这个查询大约需要500ms(相信我,尽可能优化)。为了消除这个瓶颈,我创建了一个Java程序,将相关的DB数据加载到内存中,并自行执行查询;大约需要8毫秒(我有点自豪)。我想使用这个Java程序来获得结果,如果它失败或不可用,请故障切换到让PHP运行MySQL查询 由于将数据加载到Java应用程序中需要一些时间,因此它将加载一次数据,并保持作为后台进程运行现在的问题是如何通过PHP与这个Java应用程序通信? 请记住:如何在PHP和Java程序之间进行通信?,java,php,architecture,memcached,Java,Php,Architecture,Memcached,我正在开发一个web应用程序,它经常需要运行计算密集型查询,查询结果存储在一个单独的表中。使用MySQL,这个查询大约需要500ms(相信我,尽可能优化)。为了消除这个瓶颈,我创建了一个Java程序,将相关的DB数据加载到内存中,并自行执行查询;大约需要8毫秒(我有点自豪)。我想使用这个Java程序来获得结果,如果它失败或不可用,请故障切换到让PHP运行MySQL查询 由于将数据加载到Java应用程序中需要一些时间,因此它将加载一次数据,并保持作为后台进程运行现在的问题是如何通过PHP与这个Ja
- PHP的多个实例可能需要同时与该Java进程通信
- 如果找不到Java实例(例如:它因某种原因崩溃),PHP应该使用更老、速度更慢的MySQL方法
- 可以接受中间进程,例如Memcache
- 理想情况下,该解决方案能够承受竞争条件
- 我最好不要使用MySQL作为中介
编辑:Duh。看起来我将使用某种我不熟悉的Java SocketServer。举个例子可能会有所帮助:)我的建议是使用Web服务。。。用Java编写并运行webservice,然后使用f.e.NuSOAP在php中请求它。此解决方案还有一个优点-您的Web服务可以轻松地用于其他应用程序,如f.e..NET 如果有少量方法,另一个可能更容易的选择是在Java中构建Servlet,它将把参数作为GET请求
这两种解决方案都是严格基于web的,并且都在单独的线程上工作,因此它们保证了良好的性能。我在Java端使用socket server,在PHP端使用PHP socket。效果很好 不需要使用PHP/Java桥使事情过于复杂,也不需要创建web服务器的开销
插座工作得很好,实际上我有点惭愧,我甚至问了这个问题才开始工作。谢谢你的意见!我选择使用普通的SocketServer,这样可以减少使用Web服务的开销。使用WebServices会允许其他应用程序连接到它,这是一个很好的观点,但目前这是不必要的。如果您仍然对我的答案感到满意,请将其标记为已回答;)11年后,你是如何做到这一点的?