<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leandro Garcia &#187; PHP</title>
	<atom:link href="http://www.leandrogarcia.com/blog/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.leandrogarcia.com</link>
	<description></description>
	<lastBuildDate>Wed, 11 Jan 2012 13:31:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Memcached</title>
		<link>http://www.leandrogarcia.com/blog/memcached/</link>
		<comments>http://www.leandrogarcia.com/blog/memcached/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 17:23:15 +0000</pubDate>
		<dc:creator>leandro garcia</dc:creator>
				<category><![CDATA[cache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cahe]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://www.leandrogarcia.com/?p=344</guid>
		<description><![CDATA[Eventualmente nos deparamos com alguma aplicação web, ou até mesmo site, que tenha seu conetúdo armazenado em uma base de dados, seja ela um banco de dados ou um xml ou até mesmo JSON. isso é muito interessante no ponto de vista de dinamismo, pois você pode ter um sistema de administração, atualizar de maneira [...]]]></description>
			<content:encoded><![CDATA[<p>Eventualmente nos deparamos com alguma aplicação web, ou até mesmo site, que tenha seu conetúdo armazenado em uma base de dados, seja ela um banco de dados ou um xml ou até mesmo JSON. isso é muito interessante no ponto de vista de dinamismo, pois você pode ter um sistema de administração, atualizar de maneira mais rápida, porém isso pode acarretar um grande problema se sua aplicação(site) tiver muito acesso.  Isso pode criar um gargalo enorme na transferência dos dados e até mais travar seu servidor, uma vez que cada requisição de página é uma reuisição para o arquivo ou uma requisição para o banco de dados.</p>
<p>Para se evitar esse tipo de gargalo, é interessante utilizar algum mecanismo de cache para os dados. Um dos mais utilizados e mais fáceis de se usar (pelo menos em PHP) é o memcached.</p>
<p>O ruim desse mecanismo é que o servidor tem que disponibilizá-lo, não é uma coisa que você memo possa fazer em sua aplicação. Tirando isso, é muito bom.</p>
<p>Basicamente, você armazena os dados na memória do servidor o que porna a leitura muito mais rápida.</p>
<p>O memcached, permite que você armazene qualquer tipo de texto desde que em um array, ex. você não pode armazenar somente uma string, tem que armazenar um array que tenha essa string.</p>
<p>adicionar = &#8220;string&#8221;; <strong><span style="color: #ff0000;">X errado</span></strong></p>
<p>adicionar = $array[0] = &#8220;string&#8221;;  <span style="color: #339966;"><strong>Correto</strong></span></p>
<p>No memcached você armazena em um local (chave) que você define, o conteúdo e por quanto tempo você quer que o conteúdo seja armazenado.</p>
<p>Como um banco de dados, você deve informar ao memcached o endereço de armazenamento, por padrão é localhost:11211, mas pode variar caso o rsponsável pelo servidor determine.</p>
<p>bom vamos a um exemplo</p>
<pre class="brush: php; title: ; notranslate">
$mem = new Memcache;
$mem-&gt;addServer(&quot;localhost:11211&quot;);
$mem-&gt;set(&quot;chave01&quot;, $array, TRUE, 60);
</pre>
<p>No exemplo acima, eu estou armazenando na chave01 meu array por 60 segundos.</p>
<p>Agora para pegar esse conteúdo, você deve usar a função get. Vamos ao exemplo.</p>
<pre class="brush: php; title: ; notranslate">
$mem = new Memcache;
$mem-&amp;gt;addServer(&quot;localhost:11211&quot;);
$resp = $mem-&gt;get(&quot;chave01&quot;);
print_r($resp);
</pre>
<p>Nesse exemplo eu estou pegando o conteúdo da chave01 e armazenando na variável $resp.</p>
<p>Aqui abaixo, um exemplo de uma função que procura no memcached uma determinada query e se não acha busca no banco de dados, armazena no memcached e responde o conteúdo.</p>
<pre class="brush: php; title: ; notranslate">
function mysql_queryCache($consulta, $tempo = 3600) {
     $chave = md5($consulta);  //Gera uma chave à partir de um hash formado pela query

     // Conecta no Memcached
     $mem = new Memcache;
     $mem-&gt;addServer(&quot;localhost:11211&quot;)

     // Tenta pegar o item em cache
     $query = $mem-&gt;get($chave);

     if ($query === false) {
          $query = mysql_query($consulta);
          if(mysql_num_rows($query) &gt; 0){
               $itens_array = array();

               if(mysql_num_rows($query)){
                    while($item = mysql_fetch_array($query)){
                         $itens_array[] = $item;
                    }
               }
          }else{
               $itens_array[0] = &quot;null&quot;;
               $itens_array[1] = &quot;null&quot;;
          }
          $mem-&gt;set($chave, $itens_array, TRUE, $tempo);

     } else {
          $itens_array = $query;
     }

     return $itens_array;
}

print_r(mysql_queryCache(&quot;SELECT * FROM clientes&quot;, 60) );
</pre>
<p>essa função procura no memcached a query &#8216;SELECT * FROM clientes&#8217;, se não tiver faz a busca no banco de dados, armazena no memcached e retorna o conteúdo. Se a query retornar vazia,  responde null.</p>
<p>Basicamente é isso, espero que seja tão útil para voc~es como foi para mim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandrogarcia.com/blog/memcached/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trabalhando com datas em PHP</title>
		<link>http://www.leandrogarcia.com/blog/trabalhando-com-datas-em-php/</link>
		<comments>http://www.leandrogarcia.com/blog/trabalhando-com-datas-em-php/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 11:46:29 +0000</pubDate>
		<dc:creator>leandro garcia</dc:creator>
				<category><![CDATA[dicas]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://www.leandrogarcia.com/blog/?p=82</guid>
		<description><![CDATA[É apenas uma dica, que par muitos já deve ser velha, mas tenho certeza de que para muitos é uma novidade.
Estou planejando escrever este post com esta dica faz tempo, mas não havia me decidido pela forma com que eu escreveria. Acabei me decidino por uma maneira simples e  direta.
Durante muito tempo, sempre que eu [...]]]></description>
			<content:encoded><![CDATA[<p>É apenas uma dica, que par muitos já deve ser velha, mas tenho certeza de que para muitos é uma novidade.</p>
<p>Estou planejando escrever este post com esta dica faz tempo, mas não havia me decidido pela forma com que eu escreveria. Acabei me decidino por uma maneira simples e  direta.</p>
<p>Durante muito tempo, sempre que eu precisava armazenar uma data na base de dados o fazia pela maneira em que nós, brasileiros, escrevemos, ou seja, 22/11/1984 (meu aniversário aliás, se quiser me dar um presente fiquem à vontade. rs), mas percebi que quando precisava comparar datas era um Deus nos acuda.</p>
<p>Lendo na Internet descobri que o mais interessante seria usar o formato Ano-mês-dia, ou seja meu aniversário ficaria 1984-11-22, uma maneira mais fácil de comparar datas e ordenar seus SELECTS.</p>
<p>Para escreve a data de hoje, ao invés de usar:</p>
<pre class="brush: php; title: ; notranslate">
date('d/m/Y');
</pre>
<p>use</p>
<pre class="brush: php; title: ; notranslate">
date('Y-m-d');
</pre>
<p>Você vai se surpreender como isso vai te ajudar.</p>
<p>Ah, aproveitando, se você precisar armazenar a data de atualização, use o formato datetime.</p>
<pre class="brush: php; title: ; notranslate">
date('Y-m-d H:i:s');//1984-11-22 22:05:15
</pre>
<p>Vai aqui uma funçãozinha que eu fiz pra exibir a data no formato brasileiro à partir do formato acima.</p>
<pre class="brush: php; title: ; notranslate">
function FormataData($date){

$dt = explode('&quot;-&quot;,$date');

      return &quot;{$dt[3]}/$dt[2]}/$dt[1]}&quot;;

}
</pre>
<p>Fica a dica.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandrogarcia.com/blog/trabalhando-com-datas-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: Trabalhando com horários &#8211; Fuso</title>
		<link>http://www.leandrogarcia.com/blog/php-trabalhando-com-horarios-fuso/</link>
		<comments>http://www.leandrogarcia.com/blog/php-trabalhando-com-horarios-fuso/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 19:56:53 +0000</pubDate>
		<dc:creator>leandro garcia</dc:creator>
				<category><![CDATA[dicas]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[fuso horário]]></category>
		<category><![CDATA[trabalhando com horas]]></category>

		<guid isPermaLink="false">http://www.leandrogarcia.com/blog/?p=69</guid>
		<description><![CDATA[Recentemente, peguei um projeto para desenvolver, onde eu deveria trabalhar com horário. Até ai tudo bem, no entanto eu teria que trabalhar com o horário do servidor, aí veio o problema.
Costumo utilizar um servidor que fica localizado nos Estado Unidos e o Fuso horário diferente. O que fazer?
Uma vez que você aprende é fácil, mas [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente, peguei um projeto para desenvolver, onde eu deveria trabalhar com horário. Até ai tudo bem, no entanto eu teria que trabalhar com o horário do servidor, aí veio o problema.</p>
<p>Costumo utilizar um servidor que fica localizado nos Estado Unidos e o Fuso horário diferente. O que fazer?</p>
<p>Uma vez que você aprende é fácil, mas demorei um pouquinho a descobrir.</p>
<p>O PHP tem uma função interna que faz isso pra a gente, só devemos setar o local pra o qual desejamos setar o fuso.</p>
<p>A função é <strong>date_default_timezone_set()</strong></p>
<p>Como usá-la?</p>
<p>Basta colocá-la no inicio da página em que você vai trabalhar com horário.</p>
<pre class="brush: php; title: ; notranslate">
date_default_timezone_set('Brazil/East');&lt;!--–– São Paulo ––--&gt;
?&gt;
</pre>
<p>Mas Garcia, estou trabalhando para uma empresa que fica em Portugal o que fazer?</p>
<p>Simples, altere as propriedades. <a href="http://www.php.net/manual/pt_BR/timezones.php" target="_blank"> Aqui tem a lista de todos os fusos.</a></p>
<p><a href="http://tutoriais.leandrogarcia.com/date_default_time_zone/date_default_timezone_set.php" target="_blank">Veja em funcionamento</a></p>
<p><a href="http://tutoriais.leandrogarcia.com/date_default_time_zone/date_default_timezone_set.zip">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.leandrogarcia.com/blog/php-trabalhando-com-horarios-fuso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

