Как запустить Nodejs Server из скрипта PHP? - PullRequest
0 голосов
/ 17 января 2019

У меня есть сервер 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. Я запускаю его как самостоятельный процесс. Он работает как шарм.

1 Ответ

0 голосов
/ 18 января 2019

Мое предложение будет: нет.

Запустите Node-сервер как автономный сервер, используя такую ​​среду, как Express или что-то еще. Затем вы можете предоставить конечную точку (и) вашего Node-приложения (которая будет самым простым решением IMO) через частную сеть и / или использовать простой механизм авторизации между вашим PHP-приложением и вашим Node-приложением. Затем вы можете запускать / останавливать систему уведомлений через эту простую конечную точку API вместо того, чтобы каждый раз убивать / перезапускать приложение Node. Предположим, что он зависает при запуске по какой-либо причине, вы не сможете сказать, что это не из вашего PHP-приложения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...