Pull to refresh

PHP vs MySQL. У кого время быстрее?

Reading time2 min
Views943
Не-не, тут речь не о производительности, а о самых обыкновенных часах =)

Как-то раз увидел в PHP что-то вроде
$date = mysql_result(mysql_query("SELECT CURRENT_TIMESTAMP"), 0, 0);


Кажется, на говнокоде дело было…

Посмеялся и забыл. Потом перелез с винды на убунту и вот вчера произошло нечто интересное =) MySQL и PHP в XAMPP (LAMPP) вернули разное текущее время!

print(date('Y-m-d H:i:s'));
// 2009-06-20 8:00:00

print("\n", mysql_result(mysql_query("SELECT CURRENT_TIMESTAMP"), 0, 0));
// 2009-06-20 15:00:00


т.к. под виндой подобная проблема не наблюдалась, покопался в инете и узнал, что Линух и Винда по разному трактуют системное время. Винда выставляет системное время в соответствии с местным (причем делает она это постоянно при каждой загрузке и синхронизации), а Линукс считает системное время UTC и местное отсчитывает исходя из установленного часового пояса.

Выход 1. Подогнать системное время линукса под локальное


1. Установить время на текущее.

user@server:~$ sudo date -s 12:00

2. Сделать системное время локальным:

user@server:~$ sudo /sbin/hwclock --systohc --localtime

3. Синхронизировать локальное и системное время:

user@server:~$ sudo /sbin/hwclock --hctosys --localtime

4. Перезагрузить компьютер при необходимости. Ну в моем случае, нужно было просто перезагрузить XAMPP/LAMPP

user@server:~$ sudo /opt/lampp/lampp restart

Выход 2. Подогнать часовой пояс для MySQL


Предположительно (т.к. меня удовлетворило первое решение) здесь:
dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

Выход 3. Переехать в Лондон


Но поскольку там есть летнее время, то данное решение работает лишь 6 месяцев в году. А вот у алжирских сисадминов такая проблема никогда, наверное, не возникала =)
Tags:
Hubs:
0
Comments11

Articles