frio80
frio80

Reputation: 1323

PHP Communicating w/ Java program

We're come across a problem here at my company and I'm trying to find the best solution.

Software was recently purchased that utilizes a Java program to get the tax for a certain shipment. The site that needs this was written in PHP4. How can I communicate between the two?

It was suggested to use files to communicate but that was horribly slow since the Java program needed to be recompiled every time. So, what is the best solutions to this:

  1. Create a mutli-threaded Java server and use PHP to send/receive the info.
  2. Some other type of file-writing method
  3. Something cool that I dont even know about.

Thanks in advance!

Edit: I understand the importance of web services but why would this be more efficient that using a mutli-threaded socket-based java server? The only thing connecting to this web services will be my PHP program, no one else. It seems like it might be overkill for my simple task. Am I mistaken? If so, why? Thanks.

Upvotes: 4

Views: 1573

Answers (8)

Reputation:

Use the PHP/Java Bridge from sourceforge.net. It is mature, fast and easy to install.

Upvotes: 0

Martin Tilsted
Martin Tilsted

Reputation: 709

I may miss something, but if your java program output the needed values, can't you just start the java program from php using exec (http://dk.php.net/manual/en/function.exec.php)

Upvotes: 0

Marian
Marian

Reputation: 2667

Web Services is the elegant solution. But in many cases I found much practical to go for a quick-and-dirty solution: start a Java server that communicates using a lightweight communication protocol (none of the heavyweight stuff like XML from Web Services) - example: Apache Thrift. The write a very light client, that takes parameters from command line and writes the output to the console. The client can be in Java or even in other languages, like C++ (Apache Thrift supports that). Then you call the client with system() or with exec() from PHP.

This is not a solution I would ever recommend for production, but it's great for prototyping. Quick and dirty and flexible and extremely modest learning curve (if you already use light-weight communication between your Java processes).

Upvotes: 1

MunkiPhD
MunkiPhD

Reputation: 3644

Web Services is the answer. Here's a nice intro link. Your problem is the very reason web services came to the forefront - communication between systems that couldn't ordinarily communicate.

What a web service is essentially going to do is send XML between the PHP and the Java systems. You're going to have to establish an interface for the two, which might be more difficult at the upstart, but you'll reap the benefits later on. In either case, it will be much faster than reading and writing files on the server. Disk I/O are the major bottlenecks on any server.

Upvotes: 0

HeDinges
HeDinges

Reputation: 4587

Give a look at Quercus

Quercus is Caucho Technology's fast, open-source, 100% Java implementation of the PHP language

I never used it though,

Upvotes: 0

Peter D
Peter D

Reputation: 4931

Why not dump the info into a database and have some sort of schedualed job read from it once and a while?

You can always use Quercus which allows you to run PHP in a Tomcat Servlet container.

Upvotes: 1

James Black
James Black

Reputation: 41858

Since you are using PHP4, you may want to just set up a tomcat server that is on a closed network, or just local on the machine of interest, and have it communicate with a servlet, that way you don't have to write a multi-threaded server and deal with creating a communication interface.

If you can upgrade, this page has two other options that may of interest: https://www.php.net/manual/en/intro.java.php

Upvotes: 0

João Silva
João Silva

Reputation: 91299

Wrap the Java program in a Web Service, and invoke it from PHP. You can even use caching in the Web Service, to optimize performance.

Upvotes: 7

Related Questions