2017-05-25 29 views
1

因此,我開始構建一個NodeJS應用程序,它與網站的前端一起工作。這是建立的,我想要的是通過PHP啓動它。所以你可以點擊保存,然後啓動它,如果需要的話。從PHP啓動節點似乎保持PHP運行?

該應用程序是一個websocket服務器,將監聽websocket並處理來自客戶端(我的網站的前端)的數據/命令。

我現在用的推出是如下代碼:

$command = '/usr/local/bin/node main.js & echo $!'; 
$processid = shell_exec($command); 

但由於某些原因,當我點擊保存在前端它只是掛起,並保持加載...但深藏不露這一頁?它創建的過程,我可以看到它這樣做的:

lsof -i tcp:8000 

和頁面只有當我殺了那個節點正在運行的進程停止加載...

我使用:

kill -9 <pid> 

殺死它。所以我爲什麼沒有在後臺運行它,然後完成PHP腳本有點失落......它只是掛在它上面?

任何幫助,將不勝感激。

有一點需要注意的是,它都是從命令行運行的,因此該文件是一個單獨的啓動器類,如果我通過php運行它並添加一些代碼來執行任務,它只有在我稱之爲從別的東西我有這個問題?

如果有幫助;網站使用的框架是Joomla 3.x,預先感謝。

我在MacBook Air上埃爾卡皮坦 還需要在Linux CentOS的

回答

1

使用本作品。它將抑制STDOUT和STDERR,並立即返回而不等待命令完成。

$command = '/usr/local/bin/node main.js > /dev/null 2>&1';

+0

嗨感謝這個,我嘗試使用nohup的,但我得到了以下錯誤:nohup的:不能從控制檯分離:不適當的IOCTL用於設備 –

+1

您好,我只是用這個和它的工作,事實證明我沒有正確管理標準輸出,所以它會讓PHP掛起。非常感謝! –