• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Node.js - Czym to się różni od PHP (+frameworki) na serwerach Linuxa

Object Storage Arubacloud
0 głosów
1,018 wizyt
pytanie zadane 16 lipca 2018 w PHP przez Gucci Gaduła (4,580 p.)
Witam,

Dużo ostatnio uwagi skupia wokół siebie Node.js encyklopedycznie określane jako środowisko uruchomieniowe dla wysoko skalowalnych aplikacjii... Chciałbym tak bardziej na chłopski rozum dowiedzieć się czym to się różni od tworzenia apki w PHP na jakimś frameworku i korzystania z serwera Linuxowego. No i oczywiście czy jest sens iść w to (głównie chodzi mi o rozbudowane aplikacje webowe typu forum, portal z newsami itp

Dzięki za konkretne odpowiedzi

Pozdrawiam

4 odpowiedzi

+2 głosów
odpowiedź 17 lipca 2018 przez niezalogowany

Cześć, na początku należy zaznaczyć, że nie należy porównywać PHP do Node.js. PHP to jezyk programowania a Node to tak jak już zauważyłeś słusznie środowisko uruchomieniowe. Node ma dużo frameworków, które nadają się do tworzenia tego, co możesz stworzyć w PHP (np. Express). Node (jak cały JavaScript) jest teraz w modzie i bardzo szybko sie rozwija. Do tego ma duże community i to go jeszcze bardziej napędza. Tutaj link do fajnego źródła, z którego dowiesz się więcej link. Jeśli chodzi o to, czy warto w to iść, to myślę, że jak najbardziej, Oferty pracy znajdziesz w PHP i w Nodzie (Js, frameworki backendowe). Moim zdaniem jednak lepiej iść wraz z duchem czasu i uczyć się rzeczy nowych, dlatego skłaniałbym się ku Node.js (Express) na twoim miejscu. Zaletą byłoby też to, że JS pomoże ci przy tworzeniu frontu do stron internetowych :)

1
komentarz 17 lipca 2018 przez Comandeer Guru (600,810 p.)

Moim zdaniem jednak lepiej iść wraz z duchem czasu i uczyć się rzeczy nowych, dlatego skłaniałbym się ku Node.js (Express) na twoim miejscu

Jak nowe, to raczej nie Express.js, bo to de facto najstarszy framework w Node.js. Jest sporo innych, w wielu dziedzinach lepszych (Hapi, Sails, Koa…). No i to brzmi, jakby PHP się już nie rozwijało, co jest przecież nieprawdą. 

komentarz 17 lipca 2018 przez niezalogowany
Kolega wyżej bardzo dobrze wytknął kilka nieścisłości. Zgadzam się w stu procentach i dziękuję za korektę :)
+2 głosów
odpowiedź 17 lipca 2018 przez Comandeer Guru (600,810 p.)
Główna różnica pomiędzy PHP i Node.js jest w architekturze takich aplikacji.

W przypadku PHP interpreter jest dodawany do serwera HTTP i przy każdym żądaniu na nowo uruchamia dany skrypt. Zatem każde żądanie to inicjalizacja całego frameworka na nowo. Dodatkowo PHP jest synchroniczny, co znaczy, że kod jest wykonywany w kolejności, w jakiej go zapisano.

W przypadku Node.js mamy do czynienia z jednowątkową architekturą typową dla JS-a. Tutaj framework i serwer HTTP są w jednym miejscu. Z powodu architektury całość jest asynchroniczna, co znaczy, że kolejność zapisu kodu niekoniecznie jest zachowana.
+1 głos
odpowiedź 17 lipca 2018 przez sebeks Mądrala (5,300 p.)
Node.js to sytuacja w której piszesz aplikację po stronie przeglądarki w JavaScript i aplikację na serwer też w JavaScript a dane łatwo wymienisz za pomocą obiektów json, które można bezpośrednio wstawić do nierelacyjnej bazy danych mongoDB. Kłopot jest niestety taki, że obecnie PHP i MySQL każde konto hostingowe ma za darmo, a za obsługę node i mongo trzeba dodatkowo zapłacić (około 180 zł rocznie). Drugi problem jest taki, że na hostingu PHP korzysta chyba z Apacha, a aplikacja napisana na node musi być uruchomiona wewnątrz process managera co przy kilku aplikacjach może zużyć limit procesów dla konta na serwerze.

Ja znam tylko podstawy node, ale ostatnio naszła mnie myśl, by zacząć się uczyć też podstaw PHP, który moim zdaniem lepiej sprawdzi się u mnie do rzeczy prostych (np. obsługa formularza kontaktowego).
komentarz 17 lipca 2018 przez Comandeer Guru (600,810 p.)

Node.js to sytuacja w której piszesz aplikację po stronie przeglądarki w JavaScript i aplikację na serwer też w JavaScript a dane łatwo wymienisz za pomocą obiektów json, które można bezpośrednio wstawić do nierelacyjnej bazy danych mongoDB.

Nie, Node.js nie musi być wiązany z aplikacjami client-side. Nie trzeba też wiązać to z przesyłem danych przez JSON. A do przechowywania JSON lepsze jest PostgreSQL ;)

Drugi problem jest taki, że na hostingu PHP korzysta chyba z Apacha, a aplikacja napisana na node musi być uruchomiona wewnątrz process managera co przy kilku aplikacjach może zużyć limit procesów dla konta na serwerze.

 PHP nie musi korzystać z Apache'a. Poza tym najbardziej standardowy model działania na Apache'u zakłada tworzenie wielu procesów. W tym samym czasie Node.js, dzięki architekturze reaktora, będzie miał jeden proces. Więc raczej wręcz odwrotnie: to Apache szybciej wykończyłby limit procesów.

komentarz 18 lipca 2018 przez sebeks Mądrala (5,300 p.)

W tym samym czasie Node.js, dzięki architekturze reaktora, będzie miał jeden proces. Więc raczej wręcz odwrotnie: to Apache szybciej wykończyłby limit procesów.

Uruchomiłem aplikację node za pomocą process managera forever i to zająło dwa procesy (sprawdzałem ps -aux). Następnie włączyłem inną aplikację node w forever i ps pokazał mi, że zużywam cztery procesy. Widziałem kiedyś kod dwóch rożnych aplikacji node korzystających z wspólnego pliku server.js, ale w moim przypadku były to dwa oddzielne pliki i oba pracowały na dwóch rożnych subdomenach, ale korzystały ze wspólnej bazy danych. I miałem problemy z limitem procesów na koncie. Limit został mi podniesiony, ale do dziś nie bardzo wiem jak uruchamiać wiele różnych aplikacji node na jednej domenie i jak organizować kod, by robiąc zmiany nie trzeba by było wyłączać aplikacji w prcess managerze :(

komentarz 18 lipca 2018 przez Comandeer Guru (600,810 p.)
No ok, ale forever to też aplikacja node'owa, więc logiczne jest, że jak uruchamiasz aplikację przez forever, to wstają dwa procesy node'a.
–1 głos
odpowiedź 17 lipca 2018 przez NIMuser Stary wyjadacz (11,030 p.)

Z tą wysoką skalowalnością to chyba jakaś przesada, bo z tego co pamiętam Node.js nie wspiera natywnie przetwarzania równoległego.. Node.js jest obecnie na fali (w sumie nie wiem dlaczego), chyba na zasadzie nowości, nie wiem.

You won't really be running in parallel while in a single node application. A node application runs on a single thread and only one event at a time is processed by node's event loop. Even when running on a multi-core box you won't get parallelism of processing within a node application.

Osobiście preferuje RoR i Django/Py.

Podobne pytania

0 głosów
2 odpowiedzi 495 wizyt
pytanie zadane 6 czerwca 2018 w JavaScript przez Filipotyk Obywatel (1,280 p.)
0 głosów
1 odpowiedź 359 wizyt
pytanie zadane 25 stycznia 2022 w JavaScript przez Grzegorz Mikina Dyskutant (8,060 p.)
+1 głos
1 odpowiedź 304 wizyt

92,549 zapytań

141,392 odpowiedzi

319,519 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...