node.js — проблема с запуском узла в сеансе экрана через переполнение стека

Итак, для начала; Я пытаюсь запустить приложение узла через PHP. Я создал скрипт, который может проверить, запущено ли приложение узла, закрыть его и запустить. Но у меня есть некоторые проблемы с использованием экрана с PHP.

Теперь, прежде чем я продолжу, комментарии о том, как я не должен делать это, не помогут, мне нужно запустить его через PHP, потому что он работает вместе с веб-сайтом, и я хочу, чтобы наш клиент мог изменять настройки, что перезапустит приложение (если у вас нет другой идеи).

В настоящее время я использую команду:

screen -dmS NODEJS node main.js 121016

Теперь я могу запустить узел и получить вывод (пока я добавляю куда-нибудь файл process.exit, чтобы PHP / Node не работал вечно). Я уже нахожусь в правильном каталоге, я использую этот код для его запуска:

$out = shell_exec('screen -dmS NODEJS node main.js 121016');
var_dump($out);

Но это не создание сеанса экрана. Я также попробовал:

$proc = proc_open('screen -dmS NODEJS node main.js 121016', $this->pipe_spec, $pipes);

Я также пытался использовать exec и обратные галочки, но я вполне уверен, что обратные галочки такие же, как shell_exec?

Во всяком случае, я полностью потерян, и я не уверен, что еще я могу сделать. Я не хочу, чтобы узел постоянно работал, поэтому я хочу, чтобы он запускался, когда вы нажимаете кнопку сохранить в диспетчере (в php), а затем он закрывает / останавливает себя, когда завершает свои задачи.

Любая помощь будет иметь большое значение, я потратил часы, пытаясь решить ее, но я все равно ничего не понимаю … спасибо, в любом случае.

0

Решение

Обновление об этом для всех, кто заинтересован.

Проблема была вызвана тем, что я неправильно управлял каналами и не отправлял канал stdOut. Проблема возникла в основном, когда я пытался убрать экран, так как он не давал мне правильный PID.

Обновление о том, что я использовал в конце:

node main.js > /dev/null 2> logs/app-error.log & echo $!

Последний ‘2>’ мне не удалось правильно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]