这么一个奇怪的要求,是我因为的下载站有很多字体文件,一旦发布后就基本后续不会再有新版本更新,因为字体文件也没什么好更新的,所以大部分的字体都是发布了一段时间了,这就导致日期都是显示在2022年或者更早的日期,我感觉这样看起来不舒服。
所以就写了这么一段代码
<?php
date_default_timezone_set('Asia/Shanghai');
// 指定缓存文件的路径
$cacheDir = __DIR__ . '/cache';
$cacheFile = $cacheDir . '/random_date_cache.txt';
// 如果缓存目录不存在,则创建它
if (!is_dir($cacheDir)) {
mkdir($cacheDir, 0755, true);
}
if (file_exists($cacheFile)) {
$data = file_get_contents($cacheFile);
$data = explode('|', $data);
$cachedDate = $data[0];
$expiry = $data[1];
// 检查缓存是否过期
if (time() < $expiry) {
// 缓存有效,使用缓存的日期
$randomDate = $cachedDate;
} else {
// 缓存过期,生成新的随机日期
$randomDate = generateRandomDate();
$expiry = time() + (48 * 60 * 60); // 设置新的过期时间
file_put_contents($cacheFile, "$randomDate|$expiry");
}
} else {
// 缓存文件不存在,生成新的随机日期
$randomDate = generateRandomDate();
$expiry = time() + (48 * 60 * 60); // 设置过期时间
file_put_contents($cacheFile, "$randomDate|$expiry");
}
echo $randomDate;
function generateRandomDate() {
$seed = date('Yz');
mt_srand((int)$seed);
$randomDays = mt_rand(1, 7);
$randomDateTimestamp = strtotime("-{$randomDays} days");
return date("Y-m-d", $randomDateTimestamp);
}
?>
我的做法的是把这一段代码保持成php文件 比如date.php
然后在需要显示这个日期的地方
<?php $this->need('date.php'); ?>
这样就可以了
具体看下面图片
在有效时间内。刷新页面这个日期不会变化,如果过了有效时间后就会自动生成一个txt文件 random_date_cache.txt。
这样就实现看起来 每周都在更新这些。。。
Comments | NOTHING