【发布时间】:2014-03-16 08:06:29
【问题描述】:
由于数据库变得如此之快,我正在尝试在我的服务器中实现 memcached。我想知道如何在这段代码中实现它:
function getWorkers($db)
{
$meminstance = new Memcache();
$meminstance->pconnect('localhost', 11211);
$del = $db->prepare('SELECT DISTINCT(address) from works');
$del->execute();
$arr = $del->fetchAll();
$works = getMaxWork($db);
foreach($arr as $a)
{
$del = $db->prepare('SELECT * FROM works WHERE address = \'' . $a[0] . '\'');
$del->execute();
$work = $del->rowCount();
echo '<tr>';
echo '<td>' . htmlspecialchars($a[0], ENT_QUOTES, 'UTF-8') . '</td>';
echo '<td>' . $work . '</td>';
echo '<td>' . round(intval($work)/intval($works)*100, 2) . '</td>';
echo '</tr>';
}
}
【问题讨论】:
-
您不需要再次查询每一行,因为您已经收到了初始 sql 查询中的所有行
-
只需将您通常
echo的 HTML 缓存为字符串,除非您真正受益于在其他位置准备好查询结果。 -
这里只需要de2.php.net/manual/de/memcache.get.php 和de2.php.net/manual/de/memcache.set.php,但你真的应该考虑一个好的缓存机制,因为缓存在应用程序中并不是一件小事
-
缓存很容易...缓存失效,这太糟糕了;)