Sur les serveurs web basés sur PHP (ou Java/ASP.NET/Ruby), chaque requête client est instanciée sur un nouveau thread. Mais dans Node.js, tous les clients s'exécutent sur le même thread (ils peuvent même partager les mêmes variables!) Je comprends que les opérations d'E/S sont basées sur des événements afin de ne pas bloquer la boucle du thread principal.
Ce que je ne comprends pas, c'est POURQUOI l'auteur de Node l'a choisi à thread unique? Cela complique les choses. Par exemple, je ne peux pas exécuter une fonction intensive en CPU car cela bloque le thread principal (et de nouvelles requêtes clients sont bloquées), donc je dois créer un processus (ce qui signifie que je dois créer un fichier JavaScript séparé et exécuter un autre processus Node dessus). Cependant, avec PHP, les tâches intensives en CPU ne bloquent pas les autres clients car, comme je l'ai mentionné, chaque client est sur un thread différent. Quels sont ses avantages par rapport aux serveurs web multi-threadés?
Remarque : J'ai utilisé le clustering pour contourner cela, mais ce n'est pas élégant.