PHP Общается с программой на Java


Мы столкнулись с проблемой здесь, в моей компании, и я пытаюсь найти лучшее решение.

Недавно было приобретено программное обеспечение, которое использует программу Java для получения налога за определенную партию товара. Сайт, которому это нужно, был написан на PHP4. Как я могу общаться между этими двумя?

Было предложено использовать файлы для связи, но это было ужасно медленно, так как программу Java нужно было каждый раз перекомпилировать. Итак, каковы наилучшие решения для это:

  1. Создайте многопоточный Java-сервер и используйте PHP для отправки/получения информации.
  2. Какой-либо другой тип метода записи файлов
  3. Что-то классное, о чем я даже не знаю.

Заранее спасибо!

Редактировать: Я понимаю важность веб-служб, но почему это было бы более эффективно, чем использование многопоточного java-сервера на основе сокетов? Единственной вещью, подключающейся к этим веб-сервисам, будет моя PHP-программа, и никто другой. Кажется как будто это может быть излишним для моей простой задачи. Я ошибаюсь? Если да, то почему? Спасибо.

 4
Author: frio80, 2009-08-20

8 answers

Оберните программу Java в веб-службу и вызовите ее из PHP. Вы даже можете использовать кэширование в веб-службе для оптимизации производительности.

 7
Author: João Silva, 2009-08-20 17:03:49

Почему бы не сбросить информацию в базу данных и время от времени выполнять из нее какое-нибудь запланированное задание?

Вы всегда можете использовать Quercus, который позволяет запускать PHP в контейнере сервлетов Tomcat.

 1
Author: Peter D, 2009-08-20 17:08:11

Веб-сервисы - это элегантное решение. Но во многих случаях я нашел очень практичное решение для быстрого и грязного решения: запустите сервер Java, который взаимодействует с использованием облегченного протокола связи (ни один из тяжеловесных материалов, таких как XML из веб-служб) - пример: Apache Thrift. Запись очень легкого клиента, который принимает параметры из командной строки и записывает вывод на консоль. Клиент может быть на Java или даже на других языках, таких как C++ (Apache Thrift поддерживает это). Затем вы вызываете клиента с помощью system() или с помощью exec() из PHP.

Это не то решение, которое я когда-либо рекомендовал бы для производства, но оно отлично подходит для прототипирования. Быстрая и грязная, гибкая и чрезвычайно скромная кривая обучения (если вы уже используете легкую связь между своими процессами Java).

 1
Author: Marian, 2009-08-20 18:58:06

Поскольку вы используете PHP4, вы можете просто настроить сервер tomcat, который находится в закрытой сети или просто локально на интересующей вас машине, и заставить его взаимодействовать с сервлетом, таким образом, вам не нужно писать многопоточный сервер и заниматься созданием интерфейса связи.

Если вы можете выполнить обновление, на этой странице есть два других варианта, которые могут вас заинтересовать: http://us3.php.net/manual/en/intro.java.php

 0
Author: James Black, 2009-08-20 17:06:01

Взгляните на Кверкус

Quercus - это быстрая, с открытым исходным кодом, 100%Java-реализация языка PHP технологии Кошо

Хотя я никогда им не пользовался,

 0
Author: HeDinges, 2009-08-20 17:09:22

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

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

 0
Author: MunkiPhD, 2009-08-20 17:16:45

Я могу что-то пропустить, но если ваша программа java выводит необходимые значения, не можете ли вы просто запустить программу java с php с помощью exec (http://dk.php.net/manual/en/function.exec.php)

 0
Author: Martin Tilsted, 2009-08-20 19:16:10

Используйте Мост PHP/Java из sourceforge.net . Он зрелый, быстрый и простой в установке.

 0
Author: , 2009-08-22 15:23:47