Comments 14
В целом вы правы, но если использовать пространства имен — хакнуть нечего делать:
<?php
namespace time_hack;
function time () {
return 10;
}
echo time();
пхпшный time() пожалуй а мускульный now()?
А вместо мускульного лучше использовать вставку того, который генерит PHP.
Для себя давно решил — использовать везде Unix timestamp, который генерирует скрипт, ложить как есть в BigInt, а на месте вывода уже разбираться с временными зонами. Работает железобетонно. А если БД удаленная — то тем более генерить время лучше в одном месте.
Для себя давно решил — использовать везде Unix timestamp, который генерирует скрипт, ложить как есть в BigInt, а на месте вывода уже разбираться с временными зонами. Работает железобетонно. А если БД удаленная — то тем более генерить время лучше в одном месте.
override_function() переопределит везде, а не только в конкретном месте. Тем более, не можно будет в разных местах хакнуть по разному.
Не могу сказать, что этому есть большое практическое применение, но вполне может подойти для узкого круга задач.
Не могу сказать, что этому есть большое практическое применение, но вполне может подойти для узкого круга задач.
Я думал, что это будет заметка про то, что не стоит использовать php-time() и mysql-now() одновремено, изза того что они не всегда возвращают одно и то же:
1. Сервер пхп и сервер базы может быть расинхронизирован по времени (встречается, если сервер нормально не настроен)
2. Сервер пхп и сервер базы используют разные временные зоны (во всех проектах при инициализации скрипта и при подклюении к базе обычно прописываю timezone, чтобы потом не было сюрпризов).
Так же, возможно, стоило бы сказать, чем отличаются mysql типы TIMESTAMP и DATETIME и про потенциальные грабли (опять же, многие не понимают).
1. Сервер пхп и сервер базы может быть расинхронизирован по времени (встречается, если сервер нормально не настроен)
2. Сервер пхп и сервер базы используют разные временные зоны (во всех проектах при инициализации скрипта и при подклюении к базе обычно прописываю timezone, чтобы потом не было сюрпризов).
Так же, возможно, стоило бы сказать, чем отличаются mysql типы TIMESTAMP и DATETIME и про потенциальные грабли (опять же, многие не понимают).
Хабраюзеры! минус поставить может каждый, напишите в комент, что ни так, для всех же будет полезно.
В select запросах функцию now() по-хорошему нельзя использовать, тк запрос не будет закэширован СУБД.
if ( !preg_match('|^(\d{4}-\d{2}-\d{2})|', $date, $p) ) {
throw new Exception('недопустимый формат даты');
}
Вы что-нибудь слышали о DateTime?
Sign up to leave a comment.
time() или now() как зависимость от глобального окружения