Как использовать Java из PHP 5 - PullRequest
7 голосов
/ 06 мая 2011

Я посмотрел довольно много уроков по использованию Java из PHP, но они, кажется, конфликтуют друг с другом. Многие из них говорят, что нужно изменить php.ini для использования файла dll, но, очевидно, в PHP 5 теперь есть «встроенные» возможности. Но для чего нужен Tomcat? Должен ли я избавиться от Apache, чтобы запустить это? http://php -java-bridge.sourceforge.net / pjb / installation.php говорит, что помещает файл .war в каталог автоматического развертывания Tomcat, но я не вижу никакого каталога с именем "autodeploy". Кто-нибудь объяснит шаг за шагом, как заставить Java работать на компьютере с Windows (я использую Windows 7) с PHP 5 и Apache?

Ответы [ 3 ]

14 голосов
/ 09 мая 2011

Вероятно, вы найдете тонны бесполезной и устаревшей информации о том, как использовать классы Java, из вашего веб-приложения PHP, которая совсем не помогает.Около года назад я столкнулся с подобной проблемой и обнаружил, что единственный способ, который является достаточно зрелым для использования в производстве, - это PHP / Java Bridge - тот, который вы нашли в Sourceforge.Он работает лучше, чем можно было ожидать, и не требует знания Java (однако, если вы действительно знаете Java, вам следует написать веб-сервис для этой цели и использовать его на стороне PHP).

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

PHP / Java Bridge - это сетевой протокол, поэтому единственное, что вам нужно на вашей стороне PHP, - это убедиться, что "allow_url_include""включен в вашем php.ini

Со стороны Java вы должны привязать PHP / Java Bridge к свободному порту и прослушивать соединения.Тогда ваше PHP-приложение сможет делать «require_once» из прокси-файла Bridge, который будет доступен на этом порту.Вот и все, и вы можете прозрачно создавать и вызывать Java-классы из вашего PHP-скрипта, используя этот прокси-объект Bridge (он будет сериализовывать и передавать вызовы и результаты за кулисами).

Есть два варианта, как запустить Bridge ипривязать его к какому-либо локальному порту.

1) сложный: настроить Tomcat, создать файл войны с самим мостом и библиотекой, которую вы хотите использовать.Этот способ описан здесь:

http://php -java-bridge.sourceforge.net / pjb / webapp.php

Чтобы развернуть войну в вашей установке Tomcat, простопоместите войну в папку веб-приложения Tomcat и перезапустите ее.

2) проще: упакуйте jar вместо war и запустите его (он будет использовать встроенный веб-сервер, поэтому вам не придется устанавливать Tomcat иразвернуть что угодно).Чтобы пойти по этому пути, обратитесь к этой странице:

http://php -java-bridge.sourceforge.net / pjb / desktop-apps.php

Оба способа будут работать длявы (не смотрите на слово «рабочий стол» во втором варианте, этот способ также будет хорошо работать с вашим веб-приложением PHP).

См. примеры использования в разделе «Примеры».(obvously).Также вы можете обратиться к моему маленькому клиенту PHP, который общается со встроенной базой данных Neo4J в Java с помощью PHP / Java Bridge.Однако этот пример может быть более сложным, и он предназначен для развертывания в Tomcat. В любом случае, у вас может быть представление о том, как создавать из него экземпляры и использовать классы:

1 голос
/ 17 марта 2015

Quercus

Quercus - это быстрая 100% -ная Java-реализация языка PHP с открытым исходным кодом от Caucho Technology. Quercus является функцией сервера приложений Resin компании Caucho Technology и встроен в Resin - дополнительная загрузка / установка не требуется. Разработчики, использующие Resin, могут запускать проекты PHP без необходимости установки стандартного интерпретатора PHP (http://www.php.net), поскольку Quercus берет на себя роль механизма PHP.

1 голос
/ 09 мая 2011

Вы можете просто вызвать простое Java-приложение из PHP, разветвив процесс и связавшись через stdin / stdout. В качестве альтернативы, если вы интегрируете Sphinx в веб-приложение, вы можете интегрироваться с помощью HTTP-вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...