Каким образом можно кэшировать несколько запросов с memcached в PHP? Предположим, что страница выполняет два запроса для рендеринга, нужно ли использовать два отдельных ключа и дважды получить доступ к $memcache
?Кэширование нескольких запросов с memcached
Вот пример:
$id = $_POST["id"];
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$dbh = new PDO("mysql:host=$hostname;dbname=$databasename", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$key1 = "{$id}1";
$key2 = "{$id}2";
$cache_result = array();
$cache_result = $memcache->get($key);
$cache_result2 = array();
$cache_result2 = $memcache->get($key2);
if($cache_result || $cache_result2)
{
$rows =$cache_result;
$rows2 = $cache_result2;
}
else
{
$sql = "call load_this(?);";
$users = $dbh->prepare($sql);
$users->bindValue(1, 1, PDO::PARAM_INT);
$users->execute();
$rows = $users->fetchAll(PDO::FETCH_ASSOC);
$memcache->set($key, $rows, MEMCACHE_COMPRESSED, 1200);
$sql = "Call load_that(?)";
$users = $dbh->prepare($sql);
$users->bindValue(1, 2, PDO::PARAM_INT);
$users->execute();
$rows2 = $users->fetchAll(PDO::FETCH_ASSOC);
$memcache->set($key2, $rows2, MEMCACHE_COMPRESSED, 1200);
print "NOT_CACHED";
}
"Мне нужно использовать два отдельных ключа и дважды получить $ memcache" --- это зависит. Вы хотите сохранить их отдельно или вместе? – zerkms
@zerkms Мне нужно перебирать «rows» и «rows2» отдельно, поэтому, я думаю, я не могу хранить их в одном ключе. – RedGiant
вы можете. Просто поместите их в один массив. – zerkms