我正在使用node.js,並且我希望在有類似./calculate之類的網址的請求時啓動一個新進程來進行這些複雜計算,並且我希望該進程繼續進行,即使調用它的腳本已經完成。 這可能嗎?在nodejs上啓動新進程
謝謝。
我正在使用node.js,並且我希望在有類似./calculate之類的網址的請求時啓動一個新進程來進行這些複雜計算,並且我希望該進程繼續進行,即使調用它的腳本已經完成。 這可能嗎?在nodejs上啓動新進程
謝謝。
您可以使用本機提供的子進程設施: http://nodejs.org/api/child_process.html
,並使用UNIX「的nohup」命令,以保持生成的進程,即使父進程死亡活着。
有不同的方法。可以使用https://github.com/pgriess/node-webworker。
或者更好http://nodejs.org/docs/latest/api/cluster.html#cluster_cluster。
這些解決方案是,如果你想要做一個節點子,你也可以簡單地生成一個新的節點工藝,等待輸出(http://nodejs.org/api/all.html#all_child_process_spawn_command_args_options),但節點-webworker是解決方案的一個包裝,並且更清潔。
但我不會等待。我想調用子進程而不是更多。我的意思是,如果主腳本死亡或http服務器結束,我希望子進程繼續。謝謝。 – Mario 2012-08-10 03:03:05
所以在你最後的評論我知道更好地理解你想要做什麼。
你想生成進程而不是子進程。做到這一點的最好和更清潔的方式是使用某種魔鬼來運行它們。
看一看永遠:
https://github.com/nodejitsu/forever
https://github.com/nodejitsu/forever-monitor
這可能是你的完美工具。我從來沒有用編程式,只是cli。但這是我想要看的。
談論性能,這是一個很好的決定嗎?謝謝 – Mario 2012-08-10 03:04:06
您是否正在尋找在創建它的同一個連接中返回的子進程工作的結果? – Roman 2012-08-10 08:10:20
您可以聰明一點,創建一個童工池,並通過數據庫中的隊列與他們進行交流(比如說使用類似Redis的東西),這可以非常靈活和靈活。您可能會覺得有用的幾個鏈接: http://stackoverflow.com/questions/5630208/nodejs-child-processes-exec-can-not-return-nohup-command http://stackoverflow.com/questions/ 4762016/node-js-workers-background-processes – Roman 2012-08-10 08:16:21