假设有一个内存缓存扩展处于活动状态,下面是如何操作的:
(我将使用APC 这里举个例子,因为它将与PHP 6捆绑在一起)
// set this to the current post id
$post_id = get_the_ID();
// this will attempt to get the post view count from cache (the memory)
$page_views = apc_fetch("post_{$post_id}_views");
// if it exists, increase the counter (again, only in memory)
if($page_views !== false){
$page_views = apc_inc("post_{$post_id}_views");
// write the data to the database every ...let\'s say 100 views
if(($page_views % 10) == 100)
update_your_database_here();
}
// doesn\'t exist; most likely this is the first view, so create the cache entry
else{
apc_store("post_{$post_id}_views", 1);
$page_views = 1;
}
// show it
printf(\'This post has %d views\', $page_views);
您可以选择使用WP的函数—WP\\u cache\\u incr()或WP\\u cache\\u decr()+W3TC,并选择APC。但就我个人而言,我会避免使用任何缓存插件,并创建自己的对象缓存处理程序,我可以将其放在wp内容目录中。
您也可以使用xcache来实现这一点,这无关紧要——其思想是您需要将计数存储在内存中,直到某一点,以避免任何磁盘写入。由于您的站点流量很大,我假设您拥有一台专用服务器,您可以在该服务器上安装自己的PHP扩展等。由于明显的原因,共享主机不允许您在内存中缓存数据。。。