0

我有 2 个字段要填充:每 15 分钟和每小时调用多少次页面。

以下字段是 MySql 中的 DateTime:

$lastAccess15m=$row['lastAccess15m'];
$lastAccessHour=$row['lastAccessHour'];

这些字段是整数:

$accessPer15m=$row['accessPer15m'];
$accessPerHour=$row['accessPerHour'];

我想将当前时间与 进行比较$lastAccess15,如果时间距离大于 15 分钟,则将 的值设置$lastAccess15为当前时间,并重置$accessPer15m,否则,递增$accessPer15m$lastAccessHour和也是如此$accessPerHour,之后必须将这些值保存到 mysql 数据库中。

如何获得当前时间和 $accessPer15m 之间的时间跨度(以分钟/小时为单位)?

4

2 回答 2

2

PHP时间()

返回自 Unix 纪元(格林威治标准时间 1970 年 1 月 1 日 00:00:00)以来以秒数测量的当前时间。

MySQL日期时间:

DATETIME 类型用于同时包含日期和时间部分的值。MySQL 以 'YYYY-MM-DD HH:MM:SS' 格式检索和显示 DATETIME 值。支持的范围是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。

要比较它们,您需要转换一个,然后它们执行比较:

$phpDateFromMysql = strtotime( $mysqldate );

$mySqlDateFromPHP = date('Y-m-d H:i:s', $phpdate);

最简单的方法是将 Mysql 值转换为 time() 并进行比较:

请参阅此工作示例

<?php

// compare if the value from $lastAccess15 is +15min in relation to the current time
$lastAccess15 = '2012-06-01 00:00:00';

$phpDateFromMysql = strtotime( $lastAccess15 );

if ($phpDateFromMysql - $lastAccess15 > 900) {
    $lastAccess15 = date('Y-m-d H:i:s', time());
}

echo $lastAccess15;
?>

注意:if语句中,您可以执行剩余的操作,如果时间不大于 15 分钟,甚至可以添加一个else子句来执行某些操作(如您所指的增量)。


相关阅读材料:

PHP strtotime函数

PHP日期函数

PHP elseif/else if控制结构

于 2012-06-15T20:10:14.933 回答
2

在 SQL 中还有 SELECT NOW() as current_timestamp(连同您的其他选择)。

在 PHP 中:

if ((strtotime($row['current_timestamp']) - strtotime($row['lastAccess15m'])) > 900) {

 // your code 
}

strtotime将 TimeStamp 转换为秒,然后您可以将时差与 900 秒进行比较。(15分钟)。

于 2012-06-15T19:55:32.043 回答