最佳答案
在基于PHP(或Java/ASP.NET/Ruby)的web服务器中,每个客户端请求都在一个新线程上实例化。但是在Node.js中,所有的客户端都运行在同一个线程上(它们甚至可以共享相同的变量!)我知道I/O操作是基于事件的,所以它们不会阻塞主线程循环。
我不明白的是为什么Node的作者选择它是单线程的?这让事情变得很困难。例如,我不能运行CPU密集型函数,因为它阻塞主线程(新的客户端请求被阻塞),所以我需要生成一个进程(这意味着我需要创建一个单独的JavaScript文件,并在其上执行另一个节点进程)。但是,在PHP中,cpu密集型任务不会阻塞其他客户端,因为每个客户端都在不同的线程上。与多线程web服务器相比,它的优势是什么?
注意:我已经使用集群来解决这个问题,但它并不漂亮。