php - 如何使用 Memcached 存储给定时间的数据

原文 标签 php mysql memory memcached

我想知道如何使用 Cache (MemCache) 来显示我的网站上有多少注册用户和活跃用户。我目前使用:

    return mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `active` =    1"), 0);

这不好用,因为在每次页面加载时,它都会查询数据库。这不好。那么我将如何继续制作“memcache”或类似的东西,它会在大约 10 分钟后将这个数字更新给所有用户?

我用谷歌搜索了如何,但我真的无法很好地了解它。

谢谢!

最佳答案

我会给你指导而不是完整的文档/教程。

在尝试安装 Memcached 之前,您应该使用 MySQLiPDO而不是 mysql_* 函数。查看 this documentation 中的警告消息.

你应该 install Memcached及其PHP extension .

完成后,通过调用函数 phpinfo() 确保它已启用.如果没有 Memcached,则安装失败。

这是一个明确的代码片段

$mc = new Memcached();
$mc->addServer('localhost', 11211); // add a new server to the pool

// you will want to vary this key according to the query
// if two different queries use the same key your functions will return unexpected data
$cacheKey = 'a-custom-key-that-defines-the-data-within-it';

// how long will it take for the cache to expire in seconds : an hour
$cacheLifetime = 3600; 

$data = $mc->get($cacheKey); // we get the data from cache

// check if Memcached was able to retrieve the data
if ($mc->getResultCode() === Memcached::RES_FAILURE) {
    // if for some reasons the data is not there we get it and reinject into memcached
    $data = mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `active` =    1"), 0);

    $mc->set($cacheKey, $data, $cacheLifetime); // save the data in the defined $cacheKey
}

return $data;

关于php - 如何使用 Memcached 存储给定时间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444715/

相关文章:

mysql - 如何将云 sql 实例连接到 sql 集群?

ios - 如何解决内存崩溃

php.ini 文件无处可寻?

php - PHP将格式错误的时间戳记格式更改为秒数

php - 未能删除缓冲区。没有要删除的缓冲区

java - Android Room - 处理对象中的对象列表并查询结果

php - 创建了一个具有4列3行的表。我如何设置一个PHP脚本以按ID提取每一行以从dababase生成3 tr?

php - 如何使用正确的 "headers"回显 JSON 双重嵌套对象文字

c - Linux : direct access to the hard-disk in C

android - 应用程序无法安装 : INSTALL_FAILED_DEXOPT , Android 5.0 正在发生