Tutorial: Como fazer feeds RSS de outros sites/Usando PHP/do cache.php
De Projeto RSSficado 2
Voltar para o artigo principal: Como fazer feeds RSS de outros sites/Usando PHP
<?php /* Sistema de Cache estático criado por Pedro Paulo Vezzá Campos, inspirado em um patch sugerido por Janio Sarmento para o sistema Shopping Nerdown. Atualiza o cache a cada 20 minutos, posssui a funcionalidade de purgar o cache arbitrariamente através de um parâmetro passado pela URL. Licenciado sob a licença Creative Commons by-nc-sa 3.0 Necessita de uma diretório "cache" com permissão de escrita no mesmo local onde se localiza o script que chama a função */ require("curl.php");//Usado em substituição ao file() para extrair o conteúdo do site a ser feito o Feed RSS //Pegue o parâmetro purge_cache da URL, caso seja necessário purgar o cache. Uso: ?action=purge_cache $purge_cache = false; if (isset ($_GET["action"]) && $_GET["action"] == "purge_cache"){ $purge_cache = true; } function do_cache ($url) { $md5 = md5($url); //Identificador único de URLs e caches $cachefile = "cache/{$md5}.html"; //Localização do cache $recache = false; //A não ser que algum dos casos dê positivo, não recacheie. global $purge_cache; //Varável determinada aqui acima. if (!file_exists($cachefile)) { //Novo cache? $recache = true; } else { $cacheage = filemtime ($cachefile); //Qual a idade do cache? $now = time();// Que horas são? if ($now > ($cacheage + (60 * 20))) { //Recacheie se cache for mais velho que vinte minutos $recache = true; } } if ($recache || $purge_cache) { //Se algum dos casos der positivo ou se arbitrariamente mandar purgar o cache com ?purge_cache=true... if (file_exists($cachefile)) {// E se o cache antigo existir unlink ($cachefile);//Remova o antigo } $content = open_url($url);// Faça o download do novo conteúdo usando cURL, somente se $recache ou $purge_cache forem iguais a true if (!$content){ //Se algum erro acontecer, o cURL retornará false return false; //Pare a execução da função, uma vez que não há conteúdo nenhum para gravar. } $filehandle = fopen ($cachefile, "w");//Abra o arquivo de cache fwrite ($filehandle, $content);//Grave o conteúdo de $content fclose ($filehandle);//Feche o arquivo } $output = file_get_contents ($cachefile); //Extrai o conteúdo do cache return $output; //Retorna o conteúdo do cache } ?>

