gpt4 book ai didi

php - PHP/SQL 中的 "About a hour ago"逻辑及其如何影响性能?

转载 作者:行者123 更新时间:2023-11-29 01:14:30 25 4
gpt4 key购买 nike

最近我一直在面对具有“X 小时前”、“X 天前”功能的网站。 (包括计算器)

喜欢,安尼尔大约一个小时前玩了一个游戏。Anil 2 天前升级了。Anil 刚刚发布了这条评论。

我知道这可以很容易地通过一个小函数来完成,该函数将旧时间计算为当前时间,得到以秒(或毫秒)为单位的差异并相应地返回一个字符串值。

我想问的是;

  1. 如何以最专业的方式完成?是用 PHP 计算时差还是在查询时在我们的 SQL 上计算?
  2. 这不会降低性能吗?想象一个有 100 条评论的页面,该函数将运行 100 次,因此页面加载速度会变慢。

附言。我不是在寻找脚本。

最佳答案

通常的方法是使用普通的 SQL 查询将时间差收集为整数,然后使用 PHP/Javascript 将其转换。换句话说,没什么特别的。这是大多数 Twitter 包装器中使用的 PHP 脚本:

/**
* Formats a timestamp nicely with an adaptive "x units of time ago" message.
* Based on the original Twitter JavaScript badge. Only handles past dates.
* @return string Nicely-formatted message for the timestamp.
* @param $time Output of strtotime() on your choice of timestamp.
*/
function niceTime($time) {
$delta = time() - $time;
if ($delta < 60) {
return 'less than a minute ago.';
} else if ($delta < 120) {
return 'about a minute ago.';
} else if ($delta < (45 * 60)) {
return floor($delta / 60) . ' minutes ago.';
} else if ($delta < (90 * 60)) {
return 'about an hour ago.';
} else if ($delta < (24 * 60 * 60)) {
return 'about ' . floor($delta / 3600) . ' hours ago.';
} else if ($delta < (48 * 60 * 60)) {
return '1 day ago.';
} else {
return floor($delta / 86400) . ' days ago.';
}
}
?>

这通常非常快,应该比平时多花一点时间。如果您在一个页面上进行的计算少于 300 次左右,您应该不会看到性能下降。

关于php - PHP/SQL 中的 "About a hour ago"逻辑及其如何影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com