所以要開始;我試圖通過PHP啓動一個節點應用程序。我創建了一個腳本,可以檢查節點應用程序是否正在運行,關閉它並啓動它。但是我在使用PHP的屏幕時遇到了一些麻煩。通過PHP在屏幕會話內啓動節點的問題
現在,在我繼續之前,我不應該這樣做的意見不會起作用,我需要通過PHP啓動它,因爲它與網站一起工作,並且我希望我們的客戶能夠更改設置,這將重新啓動應用程序(除非您有其他想法)。
我目前使用的命令:
screen -dmS NODEJS node main.js 121016
現在,我可以啓動節點,並得到輸出(只要我添加process.exit某處所以PHP /節點不會永遠運行)。我已經在正確的目錄還,我使用這個代碼來運行它:
$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中)時它會啓動它,然後在它完成任務時關閉/停止自身。
任何幫助都會有很長的路要走,我花了好幾個小時試圖解決它,但是我沒有得到任何地方......謝謝。
爲什麼你甚至試圖使用屏幕? –
只需使用'exec('node main.js &');' – Philipp
@JonStirling我正在使用屏幕,以便在出現任何問題時連接到程序,因爲它與網站一起運行。如果它們允許'shell_exec,那麼它允許我發送它的命令也stdin?因爲我需要發送命令也! –