Ответ 1
Сначала преобразовать $timest в timestamp
$time = strtotime($timest);
$curtime = time();
if(($curtime-$time) > 1800) { //1800 seconds
//do stuff
}
Мне нужно проверить текущее время на datetime из базы данных, если это было 30 минут, а затем выполнить код, если нет, тогда нет. Здесь я нахожусь, и я застрял:
$link = mysqli_connect("hostname", "username", "password", "database");
$q = "SELECT id FROM dwCache ORDER BY id DESC LIMIT 1";
$qu = mysqli_query($link, $q);
while($row=mysqli_fetch_array($qu, MYSQL_ASSOC)){
$id = $row['id'];
$cache = $row['cache'];
$timest = $row['time'];
}
$newTime =
$difference = $timest
if($timest >= )
Как вы можете видеть внизу, я теряю его, так как не уверен, что делать.
$timest
возвращает: 2013-02-01 12:36:01
как формат Y-m-d
h-i-s
Извиняется за двойной пост, другие удалены.
Сначала преобразовать $timest в timestamp
$time = strtotime($timest);
$curtime = time();
if(($curtime-$time) > 1800) { //1800 seconds
//do stuff
}
сделать все это в инструкции sql
SELECT id FROM `dqCache` WHERE `time`<DATE_SUB(NOW(), INTERVAL 30 MINUTE);
Это вернет все из вашей таблицы, где столбец времени будет раньше 30 минут.
Мне нравится использовать unix timestamps в этой ситуации.
$timest = date('u'); // gets the unix timestamp
$q = "SELECT id
FROM `dwCache`
WHERE {$timest} - UNIX_TIMESTAMP(`timestamp_col`) > 1800";
Объяснение:
Это в основном вычисляет разницу между текущим временем и временем в столбце таблицы. Если он превышает 1800 (30 минут), он выберет строку, и ваш PHP-код будет выполнен.
<сильные > Преимущества
Есть несколько преимуществ использования этого вместо проверки PHP, которую вы начали делать. Вы будете выбирать меньшее количество строк, тем самым занимая меньше памяти.
PS:
Thumbs up для использования MySQLi
!
SELECT id FROM dwCache ORDER BY id DESC LIMIT 1
вы получите только поле id
, это первое.
Второй, для преобразования времени: MySQL конвертировать datetime в метку времени Unix
В-третьих: вы можете преобразовать свою временную строку с помощью функции strtotime
.