PHP получает данные или взаимодействует с запущенным процессом Java. (Я думаю иначе, чем мост PHP/Java)


У меня есть веб-сервер apache2 с установленным и работающим php. Мне интересно, могу ли я каким-либо образом получить PHP-скрипт для доступа к постоянно работающей Java-программе, в основном для получения информации, которую отслеживает процесс. Программа Java не является веб-приложением и не работает на сервере apache. Это отдельная программа.

Я изучал системы мостов PHP/Java, и все, что они, похоже, делают, это позволяют запускать Java-программы с PHP и наоборот, что не так то, что мне нужно. Я могу придумать способ сделать это с помощью веб-службы и SOAP, запущенных на локальном хосте, но если есть способ избежать этого, и я смогу получить прямой доступ к программе Java, я мог бы заставить свое веб-приложение работать намного быстрее.

Приложение Java, с которым я пытаюсь "поговорить", - это программа, которую я написал, поэтому у меня есть доступ к исходному коду, чтобы внести необходимые изменения, если что-то в программе Java необходимо настроить.

Заранее спасибо, я повсюду что-то искал подобный этому.

Author: Ryan Sullivan, 2011-02-26

4 answers

Мосты PHP/Java позволяют вызывать запущенную программу Java из PHP.

Читать: http://en.wikipedia.org/wiki/PHP/Java_Bridge

Читать: http://php-java-bridge.sourceforge.net/pjb/desktop-apps.php

Мосты на самом деле используют локальную связь через сокеты, из часто задаваемых вопросов :

<?php
    include_once("Java.inc");

$i1 = new Java("your.class", "1");
$i2 = new Java("your.class", "2");
$i3 = $i1->add($i2);
echo $i3->toString() . "\n";
?>

См. Java.inc. И отредактируйте свой код java, чтобы он содержал следующую строку:

static final php.java.bridge.JavaBridgeRunner runner = php.java.bridge.JavaBridgeRunner.getInstance("9267");
 1
Author: user585553, 2011-02-27 15:53:53

Вам нужно будет так или иначе взаимодействовать с процессом Java. Поскольку веб-служба слишком тяжелая, вы можете просто обмениваться данными через сокет с помощью пользовательского текстового или двоичного протокола.

Или вы также могли бы, возможно, заставить программу Java записывать в базу данных каждые n секунд и считывать из базы данных в вашем PHP-скрипте.

ИЗМЕНИТЬ:

Посмотрите на http://www.php.net/manual/en/sockets.examples.php для примера клиента сокета на PHP.

Смотреть на http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html для примера сокета сервера в Java.

 3
Author: JB Nizet, 2011-02-25 23:33:42

Эй, значит, в основном вам нужно запустить java-приложение с php и получить ответ от java-приложения?

Если это так - я не вижу никаких проблем с php/java-мостом. Например, я успешно запустил метод шифрования java для пользовательского шифрования в php.

 0
Author: glg, 2011-02-25 23:26:09

Вы могли бы заглянуть в Quercus/Resin. PHP работает внутри Java на веб-сервере Java. Вы можете вызывать Java-код, как если бы это были функции/команды PHP. Все команды PHP не поддерживаются, как большинство из них. Например, вы можете запустить WordPress под управлением Quercus. http://www.caucho.com/resin-3.0/quercus/

 0
Author: Brent Baisley, 2011-02-27 15:16:45