0

我有一个网站,上面有几篇帖子/文章,我可以在过去 24 小时、上周、上个月以及每个帖子的所有时间查看之前对其进行跟踪。

我将时间戳保存在数据库中的每个视图上。当有人打开主页时,我循环这些时间戳并将它们相应地保存到数据库中的最后 24 小时/上周/上个月/所有时间。这工作“好”(但有问题)。

现在的问题:

如果我有 5000 个帖子怎么办!php 脚本必须循环所有 5000 个帖子并进行节省,这会导致性能问题。该功能完成后,该站点不会立即显示。我已经收到一条错误消息“允许的内存大小已用尽......”。

我怎么解决这个问题?有什么解决办法。

在打开主页时运行此功能以获取准确的计数器数据非常重要。

如果我只在帖子视图上执行此功能,然后仅针对此帖子,数据将不准确。想象一下帖子已经好几天没有被查看了,计数器数据也不会更新。

注意:它适用于在这种情况下不是很重要的 Wordpress 主题。

4

1 回答 1

0

您可以考虑使用 WordPress 的 cron 函数wp_cron (这里)

注意:与“真正的 cron 作业”不同,它确实依赖于对火的访问。

另外,考虑使用Transients API。瞬态使性能大幅提升!(这里


Transients API 简单来说就是缓存一个循环。因此,不是每次循环 5000 个帖子,而是循环一次然后设置一些数据。在后续加载时,它将获取该缓存数据。如果数据不存在或已过期,它将循环帖子以缓存新数据。

看看这个伪代码

if ( false === ( $query = get_transient( 'query' ) ) ) {
    // It wasn't there, so regenerate the data and save the transient
    $query = new WP_Query( '//Your Loop Stuff' );
    set_transient( 'query', $query );
}
$timestamps = $query->TIMESTAMP(or whatever you use);
于 2012-10-02T21:57:18.373 回答