Почему функция PHP date () выдала бы несовместимое время?Выкл на 2 часа на ровном месте - PullRequest
4 голосов
/ 21 декабря 2011

У меня есть страница, где я получаю дату / время для вставки в базу данных MySQL.

Часовой пояс сервера на два часа вперед.

В моем php.ini у меня есть date.timezone = America/Los_Angeles

Я заметил, что иногда время было на два часа меньше.

Поле MySQL имеет тип datetime, а не null (и я просто замечаю, что не установил значение по умолчанию)

Я использую Codeigniter, если это имеет значение.

Вот как я получаю время для вставки в базу данных:

$newData['time'] = $time = date("Y-m-d G:i:s");

После этого я вставил строку кода, чтобы записать время в журнал ошибок.

log_message('error', "Date time is $time");

Почему время меняется так? Эта часть журнала с 14:00 до 14:30 по местному времени.

Это все с одной страницы моего сайта в течение 29 минут.

110 ERROR - 2011-12-20 14:00:57 --> Date time is 2011-12-20 14:00:57
111 ERROR - 2011-12-20 14:01:38 --> Date time is 2011-12-20 14:01:38
112 ERROR - 2011-12-20 14:01:57 --> Date time is 2011-12-20 14:01:57
113 ERROR - 2011-12-20 16:02:19 --> Date time is 2011-12-20 16:02:19
114 ERROR - 2011-12-20 16:02:28 --> Date time is 2011-12-20 16:02:28
115 ERROR - 2011-12-20 14:03:26 --> Date time is 2011-12-20 14:03:26
116 ERROR - 2011-12-20 14:03:32 --> Date time is 2011-12-20 14:03:32
117 ERROR - 2011-12-20 14:03:46 --> Date time is 2011-12-20 14:03:46
118 ERROR - 2011-12-20 14:04:43 --> Date time is 2011-12-20 14:04:43
119 ERROR - 2011-12-20 14:04:53 --> Date time is 2011-12-20 14:04:53
120 ERROR - 2011-12-20 14:04:58 --> Date time is 2011-12-20 14:04:58
121 ERROR - 2011-12-20 14:05:03 --> Date time is 2011-12-20 14:05:03
122 ERROR - 2011-12-20 16:07:05 --> Date time is 2011-12-20 16:07:05
123 ERROR - 2011-12-20 16:07:25 --> Date time is 2011-12-20 16:07:25
124 ERROR - 2011-12-20 16:07:54 --> Date time is 2011-12-20 16:07:54
125 ERROR - 2011-12-20 16:08:05 --> Date time is 2011-12-20 16:08:05
126 ERROR - 2011-12-20 16:08:15 --> Date time is 2011-12-20 16:08:15
127 ERROR - 2011-12-20 16:09:04 --> Date time is 2011-12-20 16:09:04
128 ERROR - 2011-12-20 16:09:14 --> Date time is 2011-12-20 16:09:14
129 ERROR - 2011-12-20 16:09:44 --> Date time is 2011-12-20 16:09:44
130 ERROR - 2011-12-20 16:10:08 --> Date time is 2011-12-20 16:10:08
131 ERROR - 2011-12-20 16:10:27 --> Date time is 2011-12-20 16:10:27
132 ERROR - 2011-12-20 14:12:16 --> Date time is 2011-12-20 14:12:16
133 ERROR - 2011-12-20 14:15:30 --> Date time is 2011-12-20 14:15:30
134 ERROR - 2011-12-20 14:16:20 --> Date time is 2011-12-20 14:16:20
135 ERROR - 2011-12-20 14:17:55 --> Date time is 2011-12-20 14:17:55
136 ERROR - 2011-12-20 14:18:51 --> Date time is 2011-12-20 14:18:51
137 ERROR - 2011-12-20 14:19:16 --> Date time is 2011-12-20 14:19:16
138 ERROR - 2011-12-20 14:20:08 --> Date time is 2011-12-20 14:20:08
139 ERROR - 2011-12-20 14:27:29 --> Date time is 2011-12-20 14:27:29
140 ERROR - 2011-12-20 14:29:31 --> Date time is 2011-12-20 14:29:31
141 ERROR - 2011-12-20 14:29:55 --> Date time is 2011-12-20 14:29:55

Кто-нибудь может пролить свет на это для меня?

Спасибо

Mark

1 Ответ

1 голос
/ 21 декабря 2011

Полагаю, что проблема связана с самим системным временем, как сказал Меоу, или, как сказал Джон Б., часовой пояс PHP может перезаписываться где-то в вашей конфигурации CI.

Предполагается, что вы используете Linux/ gnu box, вы должны изменить свою регистрацию ошибок на что-то вроде этого:

log_message('error', "PHP time is $time, System time is ".exec('date'));

Что должно хотя бы сообщить вам, если проблема связана с вашим системным временем или временем PHP

(Примечание: вы ищете системное время, которое разделяет часы на части, как ваше время PHP, системное время, которое на секунду или две отличается от вашего времени PHP, является нормальным)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...