Сделать PHP исполнять и общаться с Java-приложением на веб-сервере

У меня есть java-приложение, которое будет принимать изображение в качестве ввода и выводит другое изображение. У меня есть сайт с популярным хостом (PHP + MYSQL Hosting). Я хочу создать страницу на веб-сайте с PHP с формой, в которой пользователь может загрузить изображение, которое затем передаст изображение в приложение Java.

То, что я планирую делать, – это когда пользователь загружает изображение, он сохраняется в папке на веб-сервере. Затем я вызову java-приложение на сервере, передав URL-адрес изображения в качестве аргумента, а затем приложение java выведет другое изображение, скажем, в папку результатов. После этого страница PHP будет отображать результат в браузере.

Теперь мои вопросы: возможно ли исполнять java-приложения на популярных веб-хостах (например, my – это WebHostingBuzz.com)?

Приложение java довольно тяжелое, так как оно много обрабатывает изображения. Должен ли я разгрузить приложение java на другой веб-сервер? Если да, есть ли какие-либо службы, которые будут запускать мое приложение java?

(Необязательно) Это демонстрация моего java-приложения, и я не хочу хранить изображения, которые люди загружают. Есть ли способ, с помощью которого я могу напрямую передать загруженное изображение в приложение java и выводить изображение, сгенерированное напрямую, вместо того, чтобы хранить его на веб-сервере? Я бы предпочел это, потому что, если изображение большое, я могу заставить PHP прекратить выполнение после таймаута.

Как мне связать приложение Java с PHP для получения информации о его выполнении, например, когда PHP вызывает приложение java, страница должна ждать, пока приложение завершит обработку? Я хочу, чтобы приложение java отправило ответ на страницу PHP, в котором говорилось, что обработка завершена, и страница перенаправляется или обновляется соответствующим образом.

Надеюсь, вы поняли идею, пожалуйста, предложите технологии, которые я могу использовать для ее реализации, а также если у вас есть идея лучше, опубликуйте ее! Благодаря!

Теперь мои вопросы: возможно ли исполнять java-приложения на популярных веб-хостах (например, my – это WebHostingBuzz.com)?

Это технически возможно. Но хостинг должен установить JRE на хосте и предоставить пользователю PHP достаточные разрешения на уровне ОС и файловой системы. Таким образом, вы действительно зависите от хостинга, предоставляют ли они эту возможность. Лучше всего просто связаться со службой поддержки и спросить об этом.

Если он поддерживается, вы можете просто использовать shell_exec() .

 $result = shell_exec("java -jar /path/to/imageprocessor.jar " + $imagepath); if ($result) { // Shell execution succeed. } else { // Shell execution failed. } 

Для асинхронной связи / фоновой обработки клиент должен выполнить адиаксический запрос.

Если он не поддерживается, рассмотрите перенос Java на PHP. Библиотека изображений GD имеет довольно много функций, которые могут быть полезны.

Google App Engine позволяет размещать веб-приложения Java (и Python). SDK и основная учетная запись бесплатны. С помощью SDK вы можете разрабатывать и тестировать приложение локально, а затем просто развертывать его в App Engine (доступны плагины NetBeans и Eclipse).

Затем приложение PHP может отправить данные в HTTP POST в приложение Google App Engine и получить результат в данных ответа.

Или данные сначала сохраняются в блоке базы данных, и задание обработки помещается в очередь задач («очередь сообщений»). Это имеет то преимущество, что клиентский запрос PHP будет возвращаться сразу же после того, как данные будут отправлены POSTED. Затем приложение PHP могло опросить данные результата, а Google App Engine обрабатывает изображение. Таким образом, сторона PHP будет более восприимчивой.

Не было бы проще сделать ваше приложение java веб-приложением, которое PHP мог бы вызвать через URL-адрес, в который он поместил бы URL-адрес изображения, чтобы java мог его загрузить?

как http: // yourjavaserver / обработка изображений? imgurl = IMAGE_URL

и сервлет java ответил бы с файлом изображения itlsef.

Вы можете искать «java hosting» в google, чтобы найти хост для этого, но он дороже PHP-хостинга. Может быть, лучшим выбором было бы получить выделенный сервер, на котором могли бы размещаться как PHP, так и java-приложения …

Я думаю, что ваш лучший выбор здесь с вашим java-приложением, работающим как cron (или deamon), который может загружать данные файла из базы данных. Это потребует (одного или нескольких) обновления страницы в части пользователей после завершения генерации, после чего ваш сценарий может вызвать изображение из базы данных / файловой системы.

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