2017-05-23 6 views
0

開始するには、私はPHPを介してノードアプリケーションを起動しようとしています。ノードアプリケーションが実行されているかどうかを確認し、終了して起動できるスクリプトを作成しました。しかし、私はPHPで画面を使用することにいくつかの問題があります。PHP経由でスクリーンセッション内でノードを起動する際の問題

私が続行する前に、私がそれをしてはいけないことについてのコメントは、ウェブサイトと一緒に働いているので、PHPで起動する必要があります。設定を変更すると、アプリケーションを再起動します(別のアイデアがない限り)。

私は現在のコマンドを使用しています:

screen -dmS NODEJS node main.js 121016 

今私は(限り、PHP /ノードは永遠に実行されませんので、私はどこかprocess.exitを追加する)ノードを起動し、出力を得ることができます。私はすでに正しいディレクトリに入っています。私はこのコードを使って起動しています:

$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)でsaveをクリックすると起動され、それがタスクを完了したときに閉じる/停止します。

何か助けが必要な場合は、私は時間を費やしてそれを解決しようとしていますが、どこにも...ありがとうと思います。

+0

なぜあなたは画面を使用しようとしていますか? –

+0

'exec( 'node main.js &');' – Philipp

+0

@JonStirling私はスクリーンを使用しているので、何かがうまくいかない場合に備えてプログラムに接続できるようになっています。私はそれにもコマンドを送信することができますか?私はそれもコマンドを送信する必要があるように! –

答えて

1

興味のある方は、この情報を更新してください。

パイプが正しく管理されず、stdOutパイプを送信していないために問題が発生しました。この問題は、私が正しいPIDを与えてくれなかったために画面を削除しようとしたときに主に発生しました。

私が最後に使用したものに更新:

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

最後の1「2>」私が正しく管理されていません。

関連する問題