ONJava.com -- The Independent Source for Enterprise Java
oreilly.comSafari Books Online.Conferences.


AddThis Social Bookmark Button

How to Use JMS with PHP
Pages: 1, 2

How to Install and Configure PHPMQ

This section describes how to install and configure all of the components so that PHP scripts will run under PHPMQ.

Step 1. Installing and Configuring the MantaRay Message Layer

Download and unzip the MantaRay messaging layer.

Enable the RMI API in the MantaRay configuration:

  1. Enable the RMI API by setting enable_rmi_api to true in the default_config.params configuration file.
  2. Enable the creation of an RMI registry by setting create_rmi_registry to true in the default_config.params configuration file, unless you are using an external RMI registry.
  3. Set rmi_registry_port to the port that the RMI registry will listen to, in the default_config.params configuration file.
  4. Set rmi_registry_host_name to the IP address or hostname of the computer where the RMI registry is located (if the registry is local, use localhost).

There are security considerations that need to be taken into account in order for the RMI API to work. Refer to jGuru: Remote Method Invocation: Introduction, and the security policy at Tom Valesky's "How to Create an RMI System."

Step 2. Installing and Configuring PHP

  1. Download and install PHP version 4.3.8.

  2. Enable the PHP/Java extension by adding these lines in php.ini:

    java.class.path = "./extensions/php_java.jar;\
    java.home = "./j2sdk1.4.2_03/jre"
    java.library = "./j2sdk1.4.2_03/jre/bin/client/jvm.dll"
    java.library.path = "./extensions"

    Editor's note: The java.class.path has been reformatted for this web page--it should all be on one line.

Most PHP scripts run over Apache and enable a dynamic user interface with an HTTP browser. Note that in order for the PHP/Java extension to work on Apache, you need to either run the PHP as a CGI or to run the PHP on a prefork-compiled Apache. To run PHP as a CGI on Apache, add these lines to the Apache httpd.conf configuration file:

ScriptAlias /php/ "./phpInstalledDirectory/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"

Step 3. Running the MantaRay Layer

Start MantaRay by running java org.mr.MantaStandAlone or by running standalone.bat.

Step 4. Running the PHP Script and Creating an Instance of the Messaging API

To create an instance of the PHP messaging API, a PHP script should include messaging.php, like this:

$msg = new messaging('//localhost',10005);

The parameters passed at instantiation are the host name and port number of the MantaRay RMI Registry.

Step 5. Using the PHPMQ Messaging API

After an instance of the messaging API has been created, developers can start working with the functions provided by the messaging API. These functions are discussed in the next section.

Messaging API Functions

The PHPMQ messaging API includes the following functions:

  • function enqueue($userKey, $queueName, $message)
    Sends $message (string) to a queue with the name $queueName (string). $userKey (string) is the identifier used by the messaging bus.

  • function dequeue($userKey, $queueName)
    Returns a string message dequeued from the queue with the name $queueName (string). $userKey (string) is the identifier used by the messaging bus.

  • function getQueues()
    Returns an array of strings that are the names of queues available on the message bus.

  • function getTopics()
    Returns an array of strings that are the names of topics available on the message bus.

  • function subscribe($userKey $topicName, $messagesToCash)
    Adds a listener to a given $topicName (string). The listener will receive up to $messagesToCash (number) messages. $userId (string) is the identifier used by the messaging bus; use this identifier to get messages with getMessageFromTopic(....).

  • function getMessageFromTopic($userKey, $topicName)
    Gets the messages gathered by the listener on a given $topicName (string). $userKey (string) is the identifier used by the messaging bus used when invoking subscribe(...).

  • function publishMessage($userKey, $topicName, $msg)
    Publishes a $msg (string) to a topic with name $topicName (string). $userKey (string) is the identifier used by the messaging bus.

In the PHPMQ download package, there are several example applications that use both queues and topics.


The ability of languages to cooperate is very important, but in many cases is still lacking or hard to implement. As a community, we should strive to always use the right tool for the task and ensure that these tools communicate with each other seamlessly.

PHPMQ is an example of how two languages can empower each other: using PHPMQ gives the PHP developer a window to the back-end world and gives the Java developer the freedom to use an easy and fast web development tool as his front-end tier (instead of the JSP/servlet approach that is more difficult to work with). With PHPMQ, you can have a long-lived Java application maintaining a session and keeping persistent data for the short-lived PHP scripts.

Related Links

Amir Shevat is a senior software developer with eight years of experience in computing.

Return to ONJava.com.