PHP получает данные или взаимодействует с запущенным процессом Java. (Я думаю иначе, чем мост PHP/Java)
У меня есть веб-сервер apache2 с установленным и работающим php. Мне интересно, могу ли я каким-либо образом получить PHP-скрипт для доступа к постоянно работающей Java-программе, в основном для получения информации, которую отслеживает процесс. Программа Java не является веб-приложением и не работает на сервере apache. Это отдельная программа.
Я изучал системы мостов PHP/Java, и все, что они, похоже, делают, это позволяют запускать Java-программы с PHP и наоборот, что не так то, что мне нужно. Я могу придумать способ сделать это с помощью веб-службы и SOAP, запущенных на локальном хосте, но если есть способ избежать этого, и я смогу получить прямой доступ к программе Java, я мог бы заставить свое веб-приложение работать намного быстрее.
Приложение Java, с которым я пытаюсь "поговорить", - это программа, которую я написал, поэтому у меня есть доступ к исходному коду, чтобы внести необходимые изменения, если что-то в программе Java необходимо настроить.
Заранее спасибо, я повсюду что-то искал подобный этому.
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");
Вам нужно будет так или иначе взаимодействовать с процессом 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.
Эй, значит, в основном вам нужно запустить java-приложение с php и получить ответ от java-приложения?
Если это так - я не вижу никаких проблем с php/java-мостом. Например, я успешно запустил метод шифрования java для пользовательского шифрования в php.
Вы могли бы заглянуть в Quercus/Resin. PHP работает внутри Java на веб-сервере Java. Вы можете вызывать Java-код, как если бы это были функции/команды PHP. Все команды PHP не поддерживаются, как большинство из них. Например, вы можете запустить WordPress под управлением Quercus. http://www.caucho.com/resin-3.0/quercus/