JS файл триггерного узла - PullRequest
       1

JS файл триггерного узла

14 голосов
/ 24 декабря 2011

У меня есть файл JS, который запускается через node.js, поэтому обычно я открываю окно терминала и набираю что-то вроде node myfile.js, и он работает и работает весь день; весело.

Затем, когда я хочу перезагрузить его, я нажимаю control-c, и он выходит. Тогда я снова смогу выполнить команду.

Теперь я хотел бы сделать это через веб-страницу, чтобы мои пользователи могли запускать определенные файлы JS, а также иметь возможность их «перезагружать».

Итак, два вопроса по этому поводу:

  1. Возможно ли это, и если да, то как мне начать?
  2. Безопасно ли это, и если нет, то можно ли сделать его безопасным?

На основе ответа Swatkins

Я попробовал это и ничего не получил

 $output = exec("node -v");
 echo $output;

тогда я попробовал на своей локальной машине, и она работала нормально, что дает?

также я все еще не уверен насчет безопасности и возможности остановить запущенный скрипт

Ответы [ 2 ]

17 голосов
/ 24 декабря 2011

Предполагается, что вы работаете в ОС Unix:

Вы можете запускать команды оболочки через функцию exec ():

// in php file
// to start the script 
exec("node myscript.js &", $output);

$output становится массивом каждой строки вывода, так что вы можете видеть, что такое идентификатор процесса. Затем вы использовали бы этот идентификатор процесса, чтобы убить скрипт:

exec("kill " . $processid);
3 голосов
/ 14 марта 2012

Я бы избегал любого прямого взаимодействия с оболочкой. Вероятно, было бы самым безопасным решить это следующим образом:

  • реализует некоторый общий «service» -скрипт, который запускает приложение user-node-app и поддерживает его работу
  • Сделайте так, чтобы он автоматически перезагружался при изменении соответствующих файлов или записи в базе данных
  • Когда пользователь запускает перезагрузку, добавьте флаг (отметка времени?) К записи базы данных или файлу, который отслеживается сценарием перезагрузки. Затем он перезагрузит node.js-app / script.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...