У меня есть веб-сайт и вы хотите разрешить пользователю запускать 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); ?>
Поскольку вы упоминаете в реальном времени, я бы предложил настроить PHP на Java Bridge. Инициализация JVM по каждому запросу занимает много ресурсов.
Мост PHP / Java
PHP / Java Bridge – это реализация потокового сетевого протокола на основе XML, который может использоваться для подключения собственного скриптового движка, например PHP, Scheme или Python, с виртуальной машиной Java или ECMA 335. Он до 50 раз быстрее, чем локальный RPC через SOAP, требует меньше ресурсов на стороне веб-сервера. Он быстрее и надежнее, чем прямая связь через интерфейс Java Native, и он не требует дополнительных компонентов для вызова процедур Java из PHP или PHP-процедур с Java.
Проверьте exec и другие функции выполнения программы . Но делайте это очень осторожно, или это рецепт эксплойтов.
Я предпочел бы переносить класс Java в апплет Java, который затем можно вызвать из javascript-запроса на стороне клиента: см. http://www.rgagnon.com/javadetails/java-0170.html
В противном случае, если вызов выдает много текста на стандартный вывод или класс должен запускаться на сервере из-за системных зависимостей, вызов из php exec – это путь, но вам, вероятно, понадобится что-то вроде cometd для отображения текст на клиенте в режиме реального времени. Существуют реализации для различных наборов инструментов javascript, таких как Dojo или jQuery.
Для серверной стороны здесь, похоже, реализована комета в php.
Надеюсь, это поможет…
Philippe
Является ли функция passthru какой-либо функцией?