Подтвердить что ты не робот

Запустите Java файл класса с PHP скрипт на веб-сайте

У меня есть веб-сайт и вы хотите разрешить пользователю запускать Java файл на сервере с веб-сайта.

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

Как это сделать (вызовите программу Java из PHP и отправьте стандарт из файла Java обратно на веб-сайт PHP в режиме реального времени)?

Update:

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

Как это можно сделать и требует ли он каких-либо дополнительных AJAX или JavaScript или что-то в этом роде?

4b9b3361

Ответ 1

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

Вызов приложения запуска Java-приложения с помощью exec, вы можете выполнить любое приложение Java из PHP, например.

<?php exec("java -jar file.jar arguments", $output); ?>

Ответ 2

Поскольку вы упоминаете в реальном времени, я бы предложил настроить PHP на Java Bridge. Инициализация JVM при каждом запросе занимает много ресурсов.

PHP/Java Bridge

Мост PHP/Java - это реализация потоковой передачи, Сетевой протокол на основе XML, который может используется для подключения родного script, например PHP, Scheme или Python с Java или ECMA 335 виртуальная машина. Это до 50 раз быстрее, чем локальный RPC через SOAP, требует меньше ресурсов на веб-сервер. Это быстрее и более надежный, чем прямой связь через Java Native Интерфейс, и он не требует дополнительные компоненты для вызова Java процедуры из PHP или PHP-процедур от Java.

Ответ 4

Я предпочел бы переносить класс Java в апплет Java, который затем можно вызвать из javascript-запроса на стороне клиента: см. http://www.rgagnon.com/javadetails/java-0170.html

В противном случае, если вызов выдает много текста на стандартный вывод или класс должен запускаться на сервере из-за системных зависимостей, вызов из php exec - это путь, но вам, вероятно, понадобится что-то вроде cometd, чтобы отображать текст на клиенте в режиме реального времени. Существуют реализации для различных наборов инструментов javascript, таких как Dojo или jQuery.

Для серверной части, похоже, существует кометная реализация в php здесь.

Надеюсь, это поможет...

Филипп