Node.js vagy PHP
A napjainkat leginkább meghatározó két szerveroldali szkript nyelv között a sync és async folyamatok támogatottságában van a legnagyobb különbség. A PHP alapértelmezetten a sync feldolgozást, a Node.js az async-et támogatja.
Az eltérés legésszerűbb oka az, hogy mindkét technológiát más-más időben és technológiai klímában vezették be (PHP – 1995, Node.js – 2009), mindkettő erős alternatívának számít a webalkalmazások hátterében, nyílt forráskódúak, és jelentős támogató közösséggel rendelkeznek.
Az aszinkron programozás előnyei
Nincs egymásra várakozás a processeknél. Mindegyik egymástól függetlenül, azonos sebességgel futhat. Egyik process hibája nincs hatással a többi processre. A holtidők megszüntetése sokkal gyorsabb futási sebességet ígér.
Az egyes folyamatokat jobban ki tudjuk dolgozni, a felhasználó igényeihez jobban tudjuk igazítani.
Az aszinkron programozás hátrányai
Az előnyöket csak akkor tudjuk kihasználni, ha a processek között valóban nincs kapcsolat! Ha a processek azonos erőforrásokat használnak, akkor előfordulhat a szakirodalomban Race Condition-nek nezevett jelenség.
A sok alfolyamat közötti összefüggés nem csak a programozók, de a keresőmotorok számára is nehezebben átlátható.
Melyiket válasszam?
Itt meghatározó, hogy milyen feladatot kell megoldani. Amennyiben nincsenek nyelvi problémák és mindkét nyelvet megfelelően ismerem:
Ha a projekt nagyobb részt statikus, amely kevés ügyfélkérést igényel, és a célközönsége kisebb teljesítményű eszközöket használ, a PHP a megfelelő választás.
Ha a használati eset olyan dinamikus webhelyeket tartalmaz, amelyek gyakran küldenek szerverkéréseket, és dinamikus felhasználói felülettel rendelkezik, akkor érdemes a Node.js-t használni.
Ha olyan felhasználói felületet igénylő alkalmazást hoz létre, amelyben a felhasználói élmény az elsődleges szempont. Ebben az esetben az aszinkron hívások lehetővé teszik, hogy a felhasználói felület gyorsan épüljön fel.
Fogalmak
Az általunk elkészített program egy fájl mindaddig, amíg nem kezdjük el futtatni. A végrehajtása az operációs rendszer feladata. Neki kell a memóriába tölteni és biztosítani a végrehajtáshoz szükséges egyéb erőforrásokat (további memóriát, regisztereket, CU, ALU, bemeneti/kimeneti erőforrásokat). ben process-ként jelenik meg. A programunk azonban több részre, több folyamatra is szétbontható, amelyek egyenként több szálat is tartalmazhatnak. Az alkalmazott operációs rendszertől és a hardvertől is függ, ezeket a lehetőségeket mennyire hatékonyan tudjuk kihasználni.
PHP Threads
A szálak egymástól független feladatok egy folyamaton belül. Midegyik szálnak saját memória, regiszter és verem igénye van, ezért a számítógép-architektúra meghatározza, mennyi szálat índíthatunk a folyamaton belül.
PHP Asynchronous functions
A PHP-hoz készült egy Spatie csomag, amelynek használatával Async műveleteket tudunk indítani. Telepítése a composer require spatie
paranccsal megoldható. Használatba vétele a use Spatie\Async
utasítás kiadása