PHP vs. Node.js

PHP and Node.js are both used for the server side development and thus have become a competitor for each other. Below are some differences based on different parameters to understand the two and make decision between the two giants.

PHP VS Node.js

PHP Node.js
PHP is an acronym for Hyptertext Preprocessor created by Rasmus Lerdorf in 1994. PHP is an open-source server-side scripting language designed specifically for the web development. Although PHP is a server-side scripting language, it is also used as a general purpose scripting language. PHP scripts have an extension of .php and can contain Javascript, HTML, CSS and even plain text. Node.js is an open-source server-side Javascript run-time environment built on Chrome’s JavaScript Engine(V8). Node.js is used for building fast and scalable applications and is an event driven, non-blocking I/O model. Node.js files have .js extension and contain only Javascript. It’s original author is Ryan Dahl and was initially released on May 27, 2009. With the birth of Node.js, it brings users the facility to built completely Javascript based applications.

Syntax and Access to command line

Both platforms have access to the command line interface via:

PHP Node.js
$ php -i $ node

Example: Printing ‘Hello World’ in PHP and Node.js
The following snippets compare the print ‘Hello World’ program in both the languages:

PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

// Printing Hello GeeksforGeeks in PHP
echo 'Hello GeeksForGeeks';   

chevron_right


Node.js

filter_none

edit
close

play_arrow

link
brightness_4
code

console.log('Hello GeeksForGeeks');

chevron_right


Note: To run the Node.js code, please use the REPL environment.

Synchronous OR Asynchronous

Synchronous code executes line by line and proceeds to execute the next line of code when the current line has been executed.
Asynchronous code executes all the code at the same time.



PHP Node.js
PHP is synchronous but there are some APIs that behave asynchronously apart from the synchronous lot. The problem with being synchronous can be understood by a simple example. Suppose, the first line of code has a function that takes alot of time to execute. Now due to synchronous nature, the below lines of code has to wait for their turn and will execute only after the function is executed. This makes it slower and the user to wait. Node.js is asynchronous in nature which means the JavaScript engine runs through the entire code in one go and does not wait for a function to return. The lines of code below the function will execute and the function be executing too and will return the output once done and thus it make Node.js fast.

Note: Program can get stuck in a ‘callback hell’ if a lot of functions needs to be chained which might require piping data from one function to another. However, it can be resolved by Node.js as it has feature of Async/Await which can help a block of code execute synchronously.

CONTEXT SWITCHES

The Switch between different environments and languages is attributed to the drop of efficiency when writing code. Changing between multiple coding languages leads to drop in the efficiency of the programmer.

PHP Node.js
Writing back end code in PHP, user continuously switches between different language and syntax. This is because PHP is predominantly used as part of LAMP stack which includes MySQL (for database), PHP (for server side code), and linux. All of them have different syntax plus good knowledge of HTML, CSS and Javascript is required. Since Node.js is written in JavaScript, it makes both the sides server-side and client-side based on JavaScript so there is no need to switch between the languages. Javascript stack(MEAN or MERN) is better because the only coding language and syntax used is Javascript based.

MODULES

PHP Node.js
PHP uses module installing technologies like PEAR(a veteran package system), and Composer which is comaparatively new.

  • PEAR is a framework and distribution system for reusable PHP components.
  • Composer is a tool for dependency management in PHP. It allows users to declare the libraries on which the project depends and it will manage (install/update) them for user.
Node.js comes bundled with a package management system called NPM (Node Package Manager) and its registry which is easy to use and publish.

FRAMEWORKS

PHP Node.js
PHP is a very popular server-side scripting language and has many frameworks which help in easy backend development. Some of them are Laravel, CodeIgniter, Cakephp, etc. These frameworks help in agile, robust and secure backend development of web applications. Frameworks like Express and the full-stack MVC frameworks Meteor and Derby are the most popular. New frameworks keep popping up every now and then like koa.js, hapi, total.js, sails.js etc.

Example: Laravel framework

// requires Composer installed on your system
// run following command on terminal.
// This installs laravel on your system
composer global require "laravel/installer"

// Below command creates a folder called
// GeeksForGeeks with laravel installed
laravel new GeeksForGeeks

Example: Express framework web server:

// Below command installs ExpressJS 
// in your project folder
npm install express --save

// creating web server using Express framework
// write the following code in your gfg.js file

var express = require('express');
var app = express();
express.listen('3000', function(){
console.log(' GeeksForGeeks demo server
                  running on express');
});

DATABASES

PHP Node.js
PHP is used in collaboration with traditional/relational databases like MySQL, MariaDB, PostgreSQL, etc. However, there are ways to use NoSQL database systems with PHP too but they are not very popular. Node.js works perfectly with NoSQL (Not only SQL) databases like MongoDB, CouchDB and graph database systems like Neo4j. The NPM packages for almost all the databases are available on the npm registry.

Negative point PHP: MySQL database systems are especially prone to SQL injection attacks, Cross-side scripting(XSS) and others.

Negative point Node.js: Even though they are not that common, NoSQL injection attacks are a documented vulnerability. But compared to SQL injection, they are negligible. The major reason for this is that they are new and their code design is in such a way that they are inherently resistant to such attacks.

WEB SERVERS

PHP Node.js
For versions prior to 5.4, LAMP and XAMPP(acronym for Cross-platform, Apache, MariaDB, PHP) servers had to be setup.
But from v5.4, PHP comes with a built-in development server which can be used.
Nodejs was developed for the network applications. It ships with some core modules like http, DNS, file system, etc. which helps to develop customized web servers. Some really popular frameworks for powering Node.js running web servers are Express.js, koa.js and Sails.js which can be setup by using only 4 lines of code at max.

Example: Starting PHP server

filter_none

edit
close

play_arrow

link
brightness_4
code

// starting php server
$ php -S localhost:8000
  
// index.js file code
<?php
  echo 'Hello! This is GeeksForGeeks';
?>

chevron_right


The PHP web server was provided to aid application development and can’t be used efficiently as a full-fledged web server.

Example: Starting Node.js erver

filter_none

edit
close

play_arrow

link
brightness_4
code

// starting Node.js server
$ node app.js
  
    // app.js source code
    var http
    = require('http');
http.createServer(function(req, res) {
        res.writeHead(200, { 'Content-Type' : 'text/plain' });
        res.end('Hi Programmer\n');
    })
    .listen(8080, '127.0.0.1');
console.log('GeeksForGeeks Server running at http://127.0.0.1:8080/');

chevron_right


Own web servers can be coded in Node.js on which Node.js applications can run. These servers have the potential of high scalability if configured and monitored properly.

APPLICATION DOMAINS

PHP Node.js
  • Used in developing CPU-intensive applications like meteorology applications and scientific applications.
  • LAMP stack is used in API development.
  • CMS (Content Managemtn Systems) like WordPress, Drupal also use PHP which makes it possible to be used in creating blogs, websites, e-commerce sites etc.
  • Nodejs is ideal for developing highly scalable server-side solutions because of its non-blocking I/O, and event-driven model.
  • Used massively in Real-time applications like chat applications, blogs, video streaming applications.
  • Used in developing single-page applications like resume portfolios, individual websites.

Note: PHP should be used in applications in which client does not have to interact with the server again and again and Node.js should be used for the applications which require a lot of interaction between client and server.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.