2012-04-24 3 views
3

Я хотел бы знать, есть ли способ связи с запущенной консольной программой (предпочтительно, работающей на Linux/Debian) через PHP. В настоящее время я пытаюсь создать веб-интерфейс для небольшой (существующей) консоли Java-программы, и я понятия не имею, есть ли способ сделать это. Могу ли я «ввести» кусок кода, скажем, модуль удаленного управления, а затем использовать его для «удаленного управления» скриптом через PHP? (Было бы здорово, если существующий файл .jar не будет изменен/просто впрыск, без перепрограммирования)Интерфейс с запущенными приложениями в PHP?

Я благодарен за каждый совет!

+0

Вы хотите выполнить внешнюю программу? или общаться с программой-демоном? – Jarry

ответ

1

Если программа Java просто работает и выводит на консоль, то вы можете сделать это достаточно легко, что-то вроде этого:

$output = system("java com.yourcompany.package.RunnableClass"); 
print $output; 

Предполагая, что пользователь, который работает под управлением PHP имеет доступ к Java двоичном конечно , и что у вас есть разрешение на доступ к файлу JAR.

Доступ к работающей программе немного сложнее. Большинство программ не будут иметь встроенные по умолчанию (и не должны ли они - предоставление доступа к случайным внешним процессам во многих случаях нежелательно). Если это так, вы в хорошей форме. Если это не так, и вы можете изменить код Java, тогда вы добры. Если нет, то вам может быть не повезло.

Если это так, другой хороший подход может состоять в том, чтобы узнать, какие ресурсы использует код Java, и как он обращается к ним. Тогда вы можете написать что-то подобное в PHP. Очевидно, это не идеально, поскольку вы будете изобретать колесо повторно, но если вам нужно получить данные или что-то еще, и не может использовать какой-либо из вышеперечисленных подходов, это сработает.

+0

Мой подход заключался в том, чтобы взаимодействовать с запущенной программой, чтобы вы могли управлять запущенным «демоном» (если вы хотите назвать его так) через Интернет. Я думаю, что я буду изучать «инъекцию кода» в Java немного больше. Если в этой теме есть что-то, что полностью очищает мой вопрос, я дам вам, ребята, знать. Спасибо за быстрые ответы! –

+0

«Code Injection» не будет отличным поисковым термином, поскольку он обычно используется для обозначения конкретного типа эксплойта. Вы лучше разбираетесь в обратном проектировании банки (если у вас нет доступа к источнику). – lynks

3

Если запущенная программа не имеет коммуникационного интерфейса, вы не можете общаться с ней. Если это так, то ответ очень сильно зависит от того, как программа получает внешний вход.

Если программа содержит сетевой прослушивающий поток (демон), вы можете обмениваться данными с ним на интерфейсе loopback с использованием CURL или сырых сокетов из PHP.

Другие способы связи с программой состоят в том, чтобы предоставить доступ к файлу (PHP пишет файл, Java читает его) или через базу данных.

База данных будет лучшим вариантом - она ​​является потокобезопасной, а PHP и Java имеют отличную поддержку MySQL (Java через JDBC).

Если вам не нужно фактически взаимодействовать с запущенной программой, просто нужно просто запустить/остановить/перезапустить ее, вы можете сделать это с помощью функции system() в PHP.

Смежные вопросы