Hoje falarei sobre o Memcached, um recurso indispensável para servidores que rodam sites pesados. A funcionalidade principal dele consiste em armazenar “qualquer coisa” na memória (RAM) do servidor para uso posterior. Segundo o site do próprio, ele é “um sistema distribuído de alto desempenho para o cacheamento (armazenamento) de objetos na memória, genérico por natureza, mas feito para aumentar a velocidade de sites dinâmicos, diminuindo a carga sobre o banco de dados”.
Suponhamos que você tenha um site que faz várias e várias consultas ao MySQL para exibir uma página e, algumas delas, demoram mais de 1 seguro para ser executada… Isso significa que o seu site não está otimizado e, obviamente, está mais lento do que poderia ser.
A maioria dos servidores - de qualidade - hoje em dia, já vêm com ele instalado… Caso você precise instalar ele no seu, recomendo dar uma olhada no site oficial para maiores detalhes.
Vou mostrar pra vocês como armazenar uma consulta na memória e depois pegar esses dados, sem precisar executar a query novamente… Vale lembrar que só vale a pena usar o Memcached para consultas que pesam no seu sistema, pois foi pra esse propósito que ele foi feito.
Normalmente você faria uma consulta assim:
<?php $sql = "SELECT * FROM `noticias` WHERE `ativa` = 1 ORDER BY `data` DESC LIMIT 0, 20"; $query = mysql_query($sql); while ($dados = mysql_fetch_assoc($query)) { // Aqui você faz a exibição de cada notícia }
É uma consulta normal que, nesse exemplo, não deve pesar muito… Mas imaginemos que essa consulta demore uns 2~3 segundos para ser executada.
Este exemplo irá armazenar o resultado da consulta na memória, durante 1 hora… No próximo bloco mostrarei como verificar se há um resultado armazenado na memória antes de executar a consulta novamente.
<?php // Inicia o Memcache $mem = new Memcache; // Define qual o servidor que se está usando $mem->addServer($_SERVER['HTTP_HOST']); $sql = "SELECT * FROM `noticias` WHERE `ativa` = 1 ORDER BY `data` DESC"; $query = mysql_query($sql); // Criamos uma chave para a consulta, baseada no MD5 dela $chave = md5($sql); // A consulta ficará armazenada por 1 hora $tempo = 60 * 60; // 3600s // Salvamos o resultado na memória $mem->set($chave, $query, 0, $tempo); // Exibição dos dados while ($dados = mysql_fetch_assoc($query)) { // Aqui você faz a exibição de cada notícia }
Agora que já sabemos como armazenar o resultado na memória, podemos fazer uma verificação e só executar a consulta sempre que o resultado expirar ou não existir, dessa forma:
<?php $mem = new Memcache; $mem->addServer($_SERVER['HTTP_HOST']); $sql = "SELECT * FROM `noticias` WHERE `ativa` = 1 ORDER BY `data` DESC"; $chave = md5($sql); // Buscamos o resultado na memória $cache = $mem->get($chave); // Verifica se o resultado não existe ou expirou if ($cache === false) { // Executa a consulta novamente $query=mysql_query($sql); $tempo=60*60; // 3600s $mem->set($chave, $query, 0, $tempo); } else { // A consulta está salva na memória ainda, então pegamos o resultado: $query=$cache; } // Exibição dos dados while ($dados = mysql_fetch_assoc($query)) { // Aqui você faz a exibição de cada notícia }
Você ainda poderia fazer uma função para fazer todo esse trabalho por você… Ficaria mais ou menos assim:
<?php function mysql_queryCache($consulta, $tempo = 3600) { $chave=md5($consulta); $mem=newMemcache; $mem->addServer($_SERVER['HTTP_HOST']); $query=$mem->get($chave); if ($query===false) { $query=mysql_query($consulta); $mem->set($chave, $query, 0, $tempo); } return$query; }
E agora, o exemplo anterior usando a função:
<?php $sql = "SELECT * FROM `noticias` WHERE `ativa` = 1 ORDER BY `data` DESC"; $query = mysql_queryCache($sql); // Exibição dos dados while ($dados = mysql_fetch_assoc($query)) { // Aqui você faz a exibição de cada notícia }
Xo สล็อตออนไลน์ โปรสล็อต XO เกมออนไลน์ทำเงินยอดฮิตเกมสล็อต xopg.net คือเกมทำเงิน reeffutures2018 ผ่านทางออนไลน์อย่างหนึ่ง ที่เล่นง่าย และได้เงินไว แถมยังลงทุนด้วยเงินน้อย mavoixtavoie ทำเงินได้ตลอดเวลา ซึ่งหลายคนอาจได้เคยเห็นรีวิวเรื่องของ สล็อต xo สล็อตออนไลน์ ไว้มากมาย เทคนิคสล็อต ทั้งเรื่องการเล่นแล้วได้เงิน herbalpertpresents และเล่น สล็อต แล้วไม่ได้เงิน นั่นเองค่ะ ซึ่งการที่คุณจะเล่นได้เงินหรือไม่ได้เงินนั้น essentialsforasoul ส่วนหนึ่งก็เป็นในเรื่องของดวงเข้ามาเกี่ยวด้วย northbristol เพราะสล็อตเป็นเกมออนไลน์เสี่ยงโชค ทดลองเล่น xo เกมหนึ่งซึ่งจะมีสูตร หรือเทคนิคเข้ามาช่วย gclub เพื่อโกงดวงอยู่เสมอซึ่งในเว็บของเรา สมัคร xo ก็มีมาแนะนำไว้ให้เห็นกันมากมายหลายสูตร