Blog do programador e tecnico em redes ….

Fazendo cache de dados MySQL no PHP com XCACHE

XCache é outro programa de cache por chave-valor onde o armazenamento é em memória como o memcached. Este recurso permite que você leve a memória uma variável e depois você pode chamar ela novamente facilmente somente usando a chave criada anteriormente.
Isso ajuda muito no controle do que realmente desejamos colocar em cache na memoria e a retornar, as funções do xcache para salvar e retornar um valor são xcache_set e xcache_get, tambem é possivel remover com xcache_unset, no exemplo do codigo abaixo a função mysql_queryCache mostra como funciona na pratica o cache de dados do MySQL, mais pode ser usado com outro banco como o SQLite ou até mesmo com arquivos de textos:

<?php
$connTeste = mysql_pconnect("localhost", "root", "vertrigo");
mysql_select_db("pedrofilho", $connTeste);
function mysql_queryCache($consulta, $tempo = 60) {
$chave = md5($consulta);
$query = xcache_get($chave);
if ($query == false) {
$query = mysql_query($consulta);
if (is_resource($query) && (($rows = mysql_num_rows($query)) !== 0)) {
for ($i=0; $i<$rows; $i++) {
$fields = mysql_num_fields($query);
$row = mysql_fetch_array($query);
for ($j=0; $j<$fields; $j++) {
if ($i === 0) {
$columns[$j] = mysql_field_name($query, $j);
}
$cache[$i][$columns[$j]] = $row[$j];
}
}
}
xcache_set($chave, $cache, $tempo);
return $cache;
}
return $query;
}
$query_rsCliente = "SELECT nome, telefone, email FROM clientes LIMIT 250";
$rsCliente = mysql_queryCache($query_rsCliente);
?>
<html>
<head>
<title> Clientes </title>
</head>
<body>
<H2> Relatorio de clientes </H2>
<table width="100%" border="0" cellpadding="1" bgcolor="#000000">
<tr bgcolor="#FFFF99">
<td>Nome</td>
<td>Telefone</td>
<td>E-Mail</td>
</tr>
<?php if (count($rsCliente) > 0) { ?>
<?php for ($i=0; $i<count($rsCliente); $i++) { ?>
<tr bgcolor="#FFFFFF">
<td><?php echo $rsCliente[$i]['nome']; ?></td>
<td><?php echo $rsCliente[$i]['telefone']; ?></td>
<td><?php echo $rsCliente[$i]['email']; ?></td>
</tr>
<?php } ?>
<?php } ?>
</table>
</body>
</html>

0 comentarios

Não existem comentários ainda ...

Seja o primeiro, preenchendo o formulário abaixo.

entre com um login para fazer um comentario.