Time Differences between PHP and MySQL

Support this website by purchasing prints of my photographs! Check them out here.

Here's an interesting observation I've just made while working on the NeoInvoice project… These are the results of running PHP's date() function on the current time, along with the result of running MySQL's SELECT NOW() function:

Windows Dev Server:

PHP Time  : 2010-06-13 14:24:58
MySQL Time: 2010-06-13 14:24:34

Linux Staging Server:

PHP Time  : 2010-06-13 14:24:58
MySQL Time: 2010-06-13 14:24:58

The differences between PHP/Apache's time and MySQL's time on Windows is an entire 24 seconds! This is consistent as well, after reloading the script several times, we still get the same 24 second different offset. Linux consistently has a zero second difference.

For the scholars out there, the Windows server is running APC, and the Linux server is running eAccelerator. Here's the script we used for timing (you'll want to replace the runQuery() function to reproduce):

$result = runQuery("SELECT NOW() AS mysql_time");
$row = mysql_fetch_assoc($result);
$mysql_time = date("Y-m-d H:i:s", strtotime($row['mysql_time']));
$php_time = date("Y-m-d H:i:s");
PHP Time  : <?=$php_time?>
MySQL Time: <?=$mysql_time?>
Thomas Hunter II Avatar

Thomas has contributed to dozens of enterprise Node.js services and has worked for a company dedicated to securing Node.js. He has spoken at several conferences on Node.js and JavaScript and is an O'Reilly published author.