The thing about PHP is you have to remember what it was made to be -- GLUE.
It is NOT a general purpose computing language meant for the PROCESSING of data, it's meant as glue to put data from something more optimized like a database engine into markup, or to quickly turn client-sent data into something digestible by the database engine. While it has a very robust and quite speedy library of functions, using it for anything more than that is simply trying to shove that square peg into a round hole.
I want to like node.js, and probably would if it was anything but JavaScript. Using the same language server-side as client-side has a lot of advantages, but in terms of raw performance being JavaScript it's no more or less efficient (in my experience) than PHP if you have any clue what you are doing. Admittedly, a very high bar...
JavaScripts lack of a proper object model (sad when even PHP has it better), grossly inefficient and painful array behaviors (a result of that whole "no real typecasting" crap), and buggy/bizzaroland methods of interfacing things like mysql drags it way down.
... and of course much of the new web API stuff makes the things node.js does -- including why Dahl created the language (progress bars on uploads)-- obsolete.
I'm much more impressed with node.js CLIENT side when mixed back into Webkit/Blink as with node-webkit. It's actually really useful when you want to build a cross-platform crApplet.
Honestly, it would come down to what I was really doing. If I'm building a WEBSITE that has accessibility as it's focus, I'd probably use PHP. If I was building a crapplet or pissing all over accessibility with scripttardery client-side, node.js might start to make sense.
I don't tend to favor the latter as it does more to alienate users than draw them in.
BUT -- have you considered BOTH? Right tool for the right job scenario. You build the site to work properly without any javascript using PHP, then as you enhance it with scripting client-side you can use node.js to make the async stuff the AJAX calls in parallel. PHP and client-side scripting building markup and doing pageloads, node.js handling AJAX requests from the client. (Though honestly I very much doubt you'd have better performance in a JS engine than you would PHP on that!)
Of course, PHP does have PDO, so you can scale/rewrite quickly to other database engines. I'm not sure how deep support for other database engines runs in node.js -- last I knew it was a pretty shallow pool; the ones I'm aware of not even having consistent API's making migration from one to another painful at best, even taking the differences in SQL engines into account.
-- edit -- Oh, also a LOT of the speed complaints about PHP are people just doing stupid things; like stuffing an entire result set from a query into a massive memory wasting array instead of iterating with fetch; like creating variables for NOTHING just because all the examples online do so... wasting processing time on double quotes instead of singles.
That last one is a stunning example of developer stupidity in the EXCUSES people come up with as for it "making no difference" in their mind. Single quoted strings are generally 1% faster than double quoted. You'll hear the lame excuse "Ooh, 1% faster when making a string, who gives a ****" usually followed by abusing the "premature optimization" argument... but you add it up 100 times in a program and then add in 100 other tiny little things LIKE singles vs. doubles (say... string addition instead of comma delimits on echo) and variables for nothing -- and suddenly you've wasted half your execution time on things that could simply be avoided by not hitting shift, moving your finger over one key, and using less code. (respectively).
Again, see commas vs. period string addition on commands like echo. String additions are run BEFORE the command is sent, meaning the memory for the entire result has to be allocated all at once. Comma delimits are sent individually, meaning just the pointer to the static string is passed and the result doesn't have to be allocated on the stack. (or PHP's equivalent to same)
Consider this code example:
<?php
function test() {
echo 'test';
}
echo ' this is a ', test(), '<br />';
echo ' this is a ' . test() . '<br />';
?>
Which outputs:
this is a test
test this is a
The string addition has to be built BEFORE it's sent to echo, meaning the entire result has to be placed in memory. The comma delimits are sent individually so they actually run in code order, AND reduces the memory footprint.
A LOT of the places people call PHP "slow" or "inefficient" is just developer ineptitude and/or ignorance.