Я хотел бы знать, есть ли способ связаться с запущенной консольной программой (предпочтительно, на Linux / Debian) через PHP. В настоящее время я пытаюсь создать веб-интерфейс для небольшой (существующей) консоли Java-программы, и я понятия не имею, есть ли способ сделать это. Могу ли я «ввести» кусок кода, скажем, модуль удаленного управления, а затем использовать его для «удаленного управления» скриптом через PHP? (Было бы здорово, если бы существующий файл .jar не был изменен / просто впрыск, без перепрограммирования)
Я благодарен за каждый совет!
Если запущенная программа не имеет интерфейса связи, вы не можете с ней общаться. Если это так, то ответ очень сильно зависит от того, как программа получает внешний вход.
Если программа содержит поток прослушивания сети (daemon), вы можете обмениваться данными с ним на интерфейсе loopback с использованием CURL или сырых сокетов из PHP.
Другими способами общения с программой было бы предоставить доступ к файлу (PHP пишет файл, Java читает его) или через базу данных.
База данных будет лучшим вариантом – она является потокобезопасной, и PHP и Java имеют отличную поддержку MySQL (Java через JDBC).
Если, однако, вам не нужно фактически взаимодействовать с запущенной программой, просто нужно просто запустить / остановить / перезапустить ее, вы можете сделать это с помощью функции system () в PHP.
Если программа Java просто запускается и выводится на консоль, вы можете сделать это достаточно легко, примерно так:
$output = system( "java com.yourcompany.package.RunnableClass" ); print $output;
Предполагая, что у пользователя, который работает PHP, есть доступ к двоичному файлу Java, и у вас есть разрешение на доступ к файлу JAR.
Доступ к запущенной программе немного сложнее. Большинство программ не будут иметь встроенные по умолчанию (и не должны ли они – предоставление доступа к случайным внешним процессам во многих случаях нежелательно). Если это так, вы в хорошей форме. Если это не так, и вы можете изменить код Java, тогда вы добры. Если нет, то вам может быть не повезло.
Если это так, то другой хороший подход может заключаться в том, чтобы узнать, какие ресурсы использует код Java, и как он обращается к ним. Тогда вы можете написать что-то подобное в PHP. Очевидно, это не идеально, поскольку вы будете изобретать колесо повторно, но если вам нужно получить данные или что-то еще, и не может использовать какой-либо из вышеперечисленных подходов, это сработает.