У меня есть сервер PHP, который является основным приложением.
У меня есть сервер Nodejs, который является вложенным приложением.
Сервер Nodejs используется для механизма уведомления. Я хочу иметь возможность отключить механизм уведомлений из моего основного приложения, которое работает на PHP.
Есть кнопка. При нажатии на него я изменяю свой конфигурационный файл Nodejs и теперь хочу перезапустить сервер Nodejs.
Я думаю, что я могу сделать что-то вроде этого в PHP:
exec ("убить sudo lsof -t -i:4849
");
exec ("node server.js");
Возможные проблемы:
1) Проблема с разрешениями: я полагаю, что это можно решить, предоставив моему пользователю apache права собственности на приложение узла. Я прав?
2) Exec: выполнение exec приводит к загрузке моего браузера. Я делаю netstat и нахожу работающий сервер Nodejs. Это проблема, которая беспокоит меня. Я полагаю, мне нужно сделать какой-нибудь метод fork и exec, чтобы дочерний процесс (Nodejs) выполнялся независимо.
Пожалуйста, помогите.
Решение:
exec("fuser -k ". NODEAPPPORT ."/tcp > /dev/null 2>&1 &");
exec('bash -c "exec nohup setsid node "'.NODEPATH.'/app.js" >
/dev/null 2>&1 &"');
Я перенаправил stdout и stderr в / dev / null.
Я запускаю его как самостоятельный процесс. Он работает как шарм.