{"id":1129,"date":"2014-10-12T03:00:33","date_gmt":"2014-10-12T00:00:33","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=1129"},"modified":"2014-12-09T18:45:56","modified_gmt":"2014-12-09T16:45:56","slug":"php-vs-node-js-the-real-statistics","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/","title":{"rendered":"PHP vs node.js: The REAL statistics"},"content":{"rendered":"<p>When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life.<\/p>\n<p>Now, the new buzz in the city is <a href=\"https:\/\/en.wikipedia.org\/wiki\/Node.js\" target=\"_blank\">node.js<\/a>.<\/p>\n<p>It is a light-weight platform that runs javascript code on server-side and is said to improve performance by using async I\/O.<\/p>\n<p>The <a href=\"http:\/\/notes.ericjiang.com\/posts\/751\" target=\"_blank\">theory<\/a> suggests that synchronous or blocking model of I\/O works something like this:<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-comp.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1148\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-comp.png\" alt=\"nodejs-comp\" width=\"506\" height=\"354\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-comp.png 506w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-comp-300x209.png 300w\" sizes=\"(max-width: 506px) 100vw, 506px\" \/><\/a><\/p>\n<p>I\/O is typically the costliest part of a web transaction. When a request arrives to the apache web server, it passes it to PHP interpreter for scripting any dynamic contents. Now comes the tricky part \u2013 If the PHP script wants to read something from the disk\/database or write to it, that is the slowest link in the chain. When you call PHP function file_get_contents(), the entire thread is blocked until the contents are retrieved! The server can\u2019t do anything until your script gets the file contents. Consider what happens when multiples of simultaneous requests are issued by different users to your server? They get queued, because no thread is available to do the job since they are all blocked in I\/O!<\/p>\n<p>Here comes the unique selling-point of node.js. Since node.js implements async I\/O in almost all its functions, the server thread in the above scenario is freed as soon as the file retrieval function (fs.readFile) is called. Then, once the I\/O completes, node calls a function (passed earlier by fs.readFile) along with the data parameters. In the meantime, that valuable thread can be used for serving some other request.<\/p>\n<p>So thats the theory about it anyway. But I\u2019m not someone who just accepts any new fad in the town just because it is hype and everyone uses it. Nope, I want to get under the covers and verify it for myself. I wanted to see whether this theory holds in actual practice or not.<\/p>\n<p>So I brought upon myself the job of writing two simple scripts for benchmarking this \u2013 one in PHP (hosted on apache2) and other in javascript (hosted on node.js). The test itself was very simple. The script would:<\/p>\n<p>1. Accept the request.<br \/>\n2. Generate a random string of 108 kilobytes.<br \/>\n3. Write the string to a file on the disk.<br \/>\n4. Read the contents back from disk.<br \/>\n5. Return the string back on the response stream.<\/p>\n<p>This is the first script, index.php:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;?php\r\n\/\/index.php\r\n$s=''; \/\/generate a random string of 108KB and a random filename\r\n$fname = chr(rand(0,57)+65).chr(rand(0,57)+65).chr(rand(0,57)+65).chr(rand(0,57)+65).'.txt';\r\nfor($i=0;$i&lt;108000;$i++)\r\n{\r\n\t$n=rand(0,57)+65;\r\n\t$s = $s.chr($n);\r\n}\r\n\r\n\/\/write s to a file\r\nfile_put_contents($fname,$s);\r\n$result = file_get_contents($fname);\r\necho $result;<\/pre>\n<p>And here is the second script, server.js:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\/\/server.js\r\nvar http = require('http');\r\nvar server = http.createServer(handler);\r\n\r\nfunction handler(request, response) {\r\n\t\/\/console.log('request received!');\r\n\tresponse.writeHead(200, {'Content-Type': 'text\/plain'});\r\n\r\n\ts=''; \/\/generate a random string of 108KB and a random filename\r\n\tfname = String.fromCharCode(Math.floor(65 + (Math.random()*(122-65)) )) +\r\n\t\tString.fromCharCode(Math.floor(65 + (Math.random()*(122-65)) )) +\r\n\t\tString.fromCharCode(Math.floor(65 + (Math.random()*(122-65)) )) +\r\n\t\tString.fromCharCode(Math.floor(65 + (Math.random()*(122-65)) )) + '.txt';\r\n\r\n\tfor(i=0;i&lt;108000;i++)\r\n\t{\r\n\t\tn=Math.floor(65 + (Math.random()*(122-65)) );\r\n\t\ts+=String.fromCharCode(n);\r\n\t}\r\n\r\n\t\/\/write s to a file\r\n\tvar fs = require('fs');\r\n\tfs.writeFile(fname, s, function(err, fd) {\r\n\t\t\tif (err) throw err;\r\n\t\t\t\/\/console.log('The file was saved!');\r\n\t\t\t\/\/read back from the file\r\n\t\t\tfs.readFile(fname, function (err, data) {\r\n\t\t\t\tif (err) throw err;\r\n\t\t\t\tresult = data;\r\n\t\t\t\tresponse.end(result);\r\n\t\t\t});\r\n\t\t}\r\n\t);\r\n}\r\n\r\nserver.listen(8124);\r\nconsole.log('Server running at http:\/\/127.0.0.1:8124\/');<\/pre>\n<p>And then, I ran the apache benchmarking tool on both of them with 2000 requests (200 concurrent). When I saw the time stats of the result, I was astounded:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">#PHP:\r\nConcurrency Level:      200\r\nTime taken for tests:   574.796 seconds\r\nComplete requests:      2000\r\n\r\n#node.js:\r\nConcurrency Level:      200\r\nTime taken for tests:   41.887 seconds\r\nComplete requests:      2000<\/pre>\n<p>The truth is out. node.js was faster than PHP by more 14 times! These results are astonishing. It simply means that node.js IS going to be THE de-facto standard for writing performance driven apps in the upcoming future, there is no doubt about it!<\/p>\n<p>Agreed that the <a href=\"http:\/\/nodejs.org\" target=\"_blank\">nodejs<\/a> ecosystem isn\u2019t that widely developed yet, and most node modules for things like db connectivity, network access, utilities, etc. are actively being developed. But still, after seeing these results, its a no-brainer. Any extra effort spent in developing node.js apps is more than worth it. PHP might be still having the \u201cking of web\u201d status, but with node.js in the town, I don\u2019t see that status staying for very long!<\/p>\n<h2>Update<\/h2>\n<p>After reading some comments from the below section, I felt obliged to create a C#\/mono version too. This, unfortunately, has turned out to be the slowest of the bunch (~40 secs for 1 request). Either the Task library in mono is terribly implemented, or there is something terribly wrong with my <a href=\"http:\/\/pastebin.mozilla.org\/5406784\">code<\/a>. I\u2019ll fix it once I get some time and be back with my next post (maybe ASP.NET vs node.js vs PHP!).<\/p>\n<h2>Second Update<\/h2>\n<p>As for C#\/ASP.NET, this is the most optimum version that I could manage. It still lags behind both PHP and node.js and most of the issued requests just get dropped. (And yes, I\u2019ve tested it on both Linux\/Mono and Windows-Server-2012\/IIS environments). Maybe ASP.NET is inherently slower, so I\u2019ll have to change the terms of this benchmark to take it into comparison:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">public class Handler : System.Web.IHttpHandler\r\n{\r\n    private StringBuilder payload = null;\r\n\r\n    private async void processAsync()\r\n    {\r\n        var r = new Random ();\r\n\r\n        \/\/generate a random string of 108kb\r\n        payload=new StringBuilder();\r\n        for (var i = 0; i &lt; 54000; i++)\r\n            payload.Append( (char)(r.Next(65,90)));\r\n\r\n        \/\/create a unique file\r\n        var fname = '';\r\n        do{fname = @'c:\\source\\csharp\\asyncdemo\\' + r.Next (1, 99999999).ToString () + '.txt';\r\n        } while(File.Exists(fname));            \r\n\r\n        \/\/write the string to disk in async manner\r\n        using(FileStream fs = File.Open(fname,FileMode.CreateNew,FileAccess.ReadWrite))\r\n        {\r\n            var bytes=(new System.Text.ASCIIEncoding ()).GetBytes (payload.ToString());\r\n            await fs.WriteAsync (bytes,0,bytes.Length);\r\n            fs.Close ();\r\n        }\r\n\r\n        \/\/read the string back from disk in async manner\r\n        payload = new StringBuilder ();\r\n        StreamReader sr = new StreamReader (fname);\r\n        payload.Append(await sr.ReadToEndAsync ());\r\n        sr.Close ();\r\n        \/\/File.Delete (fname); \/\/remove the file\r\n    }\r\n\r\n    public void ProcessRequest (HttpContext context)\r\n    {\r\n        Task task = new Task(processAsync);\r\n        task.Start ();\r\n        task.Wait ();\r\n\r\n        \/\/write the string back on the response stream\r\n        context.Response.ContentType = 'text\/plain';\r\n        context.Response.Write (payload.ToString());\r\n    }\r\n\r\n    public bool IsReusable\r\n    {\r\n        get {\r\n            return false;\r\n        }\r\n    }\r\n}<\/pre>\n<h2>References<\/h2>\n<ol>\n<ol>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Node.js\" target=\"_blank\">https:\/\/en.wikipedia.org\/wiki\/Node.js<\/a><\/li>\n<li><a href=\"http:\/\/notes.ericjiang.com\/posts\/751\" target=\"_blank\">http:\/\/notes.ericjiang.com\/posts\/751<\/a><\/li>\n<li><a href=\"http:\/\/nodejs.org\" target=\"_blank\">http:\/\/nodejs.org<\/a><\/li>\n<li><a href=\"https:\/\/code.google.com\/p\/node-js-vs-apache-php-benchmark\/wiki\/Tests\">https:\/\/code.google.com\/p\/node-js-vs-apache-php-benchmark\/wiki\/Tests<\/a><\/li>\n<\/ol>\n<\/ol>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/www.prahladyeri.com\/2014\/06\/php-vs-node-js-real-statistics\/\">PHP vs node.js: The REAL statistics<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/wcg\/\">WCG partner<\/a> Prahlad Yeri at the <a href=\"http:\/\/www.prahladyeri.com\/\">Prahlad Yeri<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is node.js. It is a light-weight platform that runs javascript code on server-side and is said to improve performance by using async I\/O. The theory suggests that &hellip;<\/p>\n","protected":false},"author":20,"featured_media":924,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-1129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP vs node.js: The REAL statistics - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP vs node.js: The REAL statistics - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prahlad1981\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-12T00:00:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-12-09T16:45:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Prahlad Yeri\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/prahladyeri\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prahlad Yeri\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/\"},\"author\":{\"name\":\"Prahlad Yeri\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/adbf41ec03855cdb1730dd42f2725bfd\"},\"headline\":\"PHP vs node.js: The REAL statistics\",\"datePublished\":\"2014-10-12T00:00:33+00:00\",\"dateModified\":\"2014-12-09T16:45:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/\"},\"wordCount\":1137,\"commentCount\":7,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg\",\"articleSection\":[\"Web Dev\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/\",\"name\":\"PHP vs node.js: The REAL statistics - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg\",\"datePublished\":\"2014-10-12T00:00:33+00:00\",\"dateModified\":\"2014-12-09T16:45:56+00:00\",\"description\":\"When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Dev\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/web-development\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PHP vs node.js: The REAL statistics\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/adbf41ec03855cdb1730dd42f2725bfd\",\"name\":\"Prahlad Yeri\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70a8e7bba939c7539943aa1191374d2504d95a2a95acb04a1e44adc3b4c72fe3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70a8e7bba939c7539943aa1191374d2504d95a2a95acb04a1e44adc3b4c72fe3?s=96&d=mm&r=g\",\"caption\":\"Prahlad Yeri\"},\"description\":\"Prahlad is a freelance software developer working on web and mobile application development. He also likes to blog about programming and contribute to opensource.\",\"sameAs\":[\"http:\/\/www.prahladyeri.com\/\",\"https:\/\/www.facebook.com\/prahlad1981\",\"http:\/\/in.linkedin.com\/pub\/prahlad-yeri\/16\/a53\/243\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/prahladyeri\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/prahlad-yeri\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP vs node.js: The REAL statistics - Web Code Geeks - 2026","description":"When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/","og_locale":"en_US","og_type":"article","og_title":"PHP vs node.js: The REAL statistics - Web Code Geeks - 2026","og_description":"When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is","og_url":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_author":"https:\/\/www.facebook.com\/prahlad1981","article_published_time":"2014-10-12T00:00:33+00:00","article_modified_time":"2014-12-09T16:45:56+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg","type":"image\/jpeg"}],"author":"Prahlad Yeri","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/prahladyeri","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Prahlad Yeri","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/"},"author":{"name":"Prahlad Yeri","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/adbf41ec03855cdb1730dd42f2725bfd"},"headline":"PHP vs node.js: The REAL statistics","datePublished":"2014-10-12T00:00:33+00:00","dateModified":"2014-12-09T16:45:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/"},"wordCount":1137,"commentCount":7,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg","articleSection":["Web Dev"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/","url":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/","name":"PHP vs node.js: The REAL statistics - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg","datePublished":"2014-10-12T00:00:33+00:00","dateModified":"2014-12-09T16:45:56+00:00","description":"When it comes to web programming, I\u2019ve always coded in ASP.NET or the LAMP technologies for most part of my life. Now, the new buzz in the city is","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/nodejs-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/web-development\/php-vs-node-js-the-real-statistics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Web Dev","item":"https:\/\/www.webcodegeeks.com\/category\/web-development\/"},{"@type":"ListItem","position":3,"name":"PHP vs node.js: The REAL statistics"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/adbf41ec03855cdb1730dd42f2725bfd","name":"Prahlad Yeri","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/70a8e7bba939c7539943aa1191374d2504d95a2a95acb04a1e44adc3b4c72fe3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70a8e7bba939c7539943aa1191374d2504d95a2a95acb04a1e44adc3b4c72fe3?s=96&d=mm&r=g","caption":"Prahlad Yeri"},"description":"Prahlad is a freelance software developer working on web and mobile application development. He also likes to blog about programming and contribute to opensource.","sameAs":["http:\/\/www.prahladyeri.com\/","https:\/\/www.facebook.com\/prahlad1981","http:\/\/in.linkedin.com\/pub\/prahlad-yeri\/16\/a53\/243\/","https:\/\/x.com\/https:\/\/twitter.com\/prahladyeri"],"url":"https:\/\/www.webcodegeeks.com\/author\/prahlad-yeri\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/1129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=1129"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/1129\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/924"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=1129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=1129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=1129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}