php - 比较时间戳

标签 php mysql datetime

嗨,我的 php 很生锈,我不太记得如何做。

我有一个脚本,我只想每 15 分钟调用一次。我创建了一个名为 last_updated 的表。我想要做的是在我的脚本顶部有一些代码来查询这个 last_updated 表,如果 now() 减去上次更新时间大于 15 分钟,然后运行脚本并将 last_updated 更新为现在...如果不是,请不要运行脚本。这有意义吗?

现在我知道我什么时候更新 last_updated 我需要使用 now() 来放入一个新的时间戳,但是我不确定如何将 now 与 db 值进行比较以查看它是否大于 15 分钟.

任何想法

最佳答案

<?php
$pdo = new PDO('mysql:host=your_host;dbname=your_database', $user, $password, array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));

// query the database. change 
$stmt = $pdo->query('SELECT UNIX_TIMESTAMP(last_updated_date) FROM last_updated ORDER BY last_updated_date DESC LIMIT 1');

$lastUpdatedTimestamp = $stmt->fetch(PDO::FETCH_COLUMN);

if ((time() - $lastUpdatedTimestamp) > (60 * 15)) {
    touch($file);
    // do stuff
}

time()以秒为单位为您提供当前时间。您可能应该将 60 * 15 展开为 900,我只是提供了两个数字来说明发生了什么。

此外,文件可能比数据库表更好。看看 touch() 功能。它更改文件的修改时间,或者如果不存在则创建一个以当前时间作为修改时间的空文件。您可以使用 filemtime() 检查文件修改时间

<?php
$lastUpdated = null;
$file = '/path/to/writable/file/with/nothing/in/it';

if (file_exists($file)) {
    $lastUpdated = filemtime($lastUpdated);
}

if (!$lastUpdated || (time() - $lastUpdated) > 900) {
    touch($file);
    // do stuff
}

关于php - 比较时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3487799/

相关文章:

python - Pandas :将日期时间列转换为 int

php - 代码点火器 : complex query with join and limit

PHP/MYSQL - 在 INSERT INTO ... WHERE NOT EXISTS 的情况下检查成功/失败

PHP-MySQL 链接检索正常,但在表中移动链接

java - 如何检查时间是否重叠?

python - `datetime.strftime` 和 `datetime.strptime` 对 %Y 的解释不同

php - 使用 php、sql、html/css 突出显示和平均/总销售额

php - 如何与多个项目共享 Symfony2 模型

mysql - mysql 5.7 可以识别 5.1 中的 mysqldump 文件吗?

mysql - 如何将数据从AWS IoT发送到Mysql数据库?