У меня есть JS-файл, который выполняется через node.js, поэтому обычно я node myfile.js
окно терминала и node myfile.js
что-то вроде node myfile.js
и он запускается и работает весь день; весело.
Затем, когда я хочу перезагрузить его, я нажимаю control-c, и он завершает работу. Затем я могу снова запустить команду.
Теперь то, что я хотел бы сделать, – это сделать это через веб-страницу, чтобы мои пользователи могли запускать определенные JS-файлы, а также иметь возможность «перезагружать» их.
Итак, два вопроса:
Основываясь на ответе swatkins
я попробовал это и ничего не получил
$output = exec("node -v"); echo $output;
то я попробовал на своей локальной машине, и он отлично работал, что дает?
также я все еще не уверен в безопасности и возможности остановить запущенный скрипт
Предполагая, что вы используете ОС на базе Unix:
Вы можете запускать команды оболочки через функцию exec ():
// in php file // to start the script exec("node myscript.js &", $output);
$output
становится массивом каждой строки вывода, поэтому вы можете видеть, что такое идентификатор процесса. Затем вы должны использовать этот идентификатор процесса, чтобы убить скрипт:
exec("kill " . $processid);
Я бы избегал прямого взаимодействия с оболочкой. Вероятно, это было бы самым безопасным, чтобы решить это так: