Как запустить программу на Java и получить вывод в PHP? - PullRequest
9 голосов
/ 24 сентября 2010

Я хотел бы запустить что-то вроде (в myProgram.sh):

java -cp whatever.jar com.my.program $1

в PHP и прочитайте вывод.

Пока у меня есть что-то вроде:

$processOrderCommand = 'bash -c "exec nohup setsid /myProgram.sh ' . $arg1 . ' > /dev/null 2>&1 &"';
exec($processOrderCommand);

Но то, что я действительно хотел бы, это иметь возможность получать выходные данные java-программы в сценарии PHP, а не просто выполнять ее как другой поток.

Как это можно сделать?

Ответы [ 2 ]

7 голосов
/ 24 сентября 2010

Вы можете сделать это:

exec($processOrderCommand, $output);

Из документации:

Если присутствует аргумент output, то указанный массив будет заполняться каждой строкой вывода команды. Конечные пробелы, такие как \ n , не включены в этот массив. Обратите внимание, что если массив уже содержит некоторые элементы, exec () добавится в конец массива. Если вы не хотите, чтобы функция добавляла элементы, вызовите unset () в массиве, прежде чем передавать его в exec () .

Для лучшего контроля над исполнением вы можете взглянуть на proc_open()


Ресурсы:

0 голосов
/ 28 сентября 2010

Ключ в том, что пути к классам должны быть абсолютными в shell_exec PHP скрипт.

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

Также, это помогло определить абсолютный путь к Java, например, usr /.../ bin / java

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