Я имею веб-сайт и хочу быть в состоянии позволить пользователю выполнять файл Java на сервере от веб-сайта.
Я хочу, чтобы пользователь нажал кнопку, которая выполнит файл Java на сервере, И что-либо распечатанное к стандарту программой Java будет распечатано на веб-сайте для пользователя для наблюдения.
Как это может быть сделано (назовите программу Java от PHP и подайте стандарт из файла Java назад к веб-сайту PHP в режиме реального времени)?
Обновление:
Спасибо за ответы о том, как запустить программу Java от PHP. Однако я также хочу быть в состоянии, поскольку программа Java печатает к stdout, где это будет распечатывать много текста, поскольку это выполняется, чтобы быть в состоянии распечатать это на веб-странице так, чтобы пользователь видел то, что подготавливает программу Java, находится в ее выполнении.
Как это может быть сделано, и это требует какого-либо дополнительного Ajax или JavaScript или чего-нибудь как этот?
Функция PHP exec()
- это путь, но вы должны быть очень осторожны в том, что вы разрешаете выполнять... другими словами, не полагайтесь на пользовательский ввод, так как он может потенциально скомпрометировать весь ваш сервер.
Вызвав запуск Java-приложений с помощью exec, вы можете выполнить любое Java-приложение из PHP, например,
<?php exec("java -jar file.jar arguments", $output); ?>
Проверьте выполнение и другие функции выполнения программы . Но сделайте это очень аккуратно , иначе это рецепт эксплойтов.
Я предпочел бы обернуть класс Java в Java-апплете, который затем может быть вызван от вызова JavaScript на стороне клиента: см. http://www.rgagnon.com/javadetails/java-0170.html
В противном случае, если вызов бросает много текста на стандартный выход или класс должен быть запущен на сервере из-за системных зависимостей, вызов от PHP Exec - это путь, но вам, вероятно, понадобится что-то вроде Cometd Чтобы отобразить текст на клиенте в режиме реального времени. Существуют реализации для различных инструментов для JavaScript, таких как Dojo или jQuery.
Для сторон сервера в PHP, кажется, реализация Cometd .
Я надеюсь, что это поможет ...
Philippe
Поскольку вы упоминаете, что в режиме реального времени я бы предложил создать PHP к мосту Java. Инициализация JVM при каждом запросе занимает много ресурсов.
PHP / Java Bridge Реализация потоковой передачи, Сетевой протокол на основе XML, который может использоваться для подключения родного скрипта двигатель, например PHP, схема или Python, с Java или Ecma 335 виртуальная машина. Это до 50 раз быстрее, чем локальный RPC через мыло, требует меньшего количества ресурсов на сторона веб-сервера. Это быстрее и более надежный, чем прямой Связь через родной Java Интерфейс, и это не требует Дополнительные компоненты, чтобы вызвать Java Процедуры из PHP или PHP процедур от Java.