Criar um mecanismo de cache em PHP
Tentar optimizar um script lento nunca é tarefa de 5 minutos. Quando o script não tem formulários, nem os dados são actualizados com muita frequência, podemos usar um mecanismo de cache. Este script assume que existe uma directoria “cache” com permissões de escrita para o PHP.
São criados ficheiros com base nos argumentos do pedido, permitindo uma maior versatibilidades de execução.
<? //****************************************************************************** //****************************************************************************** $lv_strFile = $_SERVER["QUERY_STRING"]; $lv_strFile = str_replace("&","_",$lv_strFile); $lv_strFile = str_replace("+","_",$lv_strFile); $lv_strFile = str_replace("/","_",$lv_strFile); $lv_strFileCached = "cache/".$lv_strFile .".html"; $lv_intUserCache = 0; $lv_strContents = ""; if (($lv_intUserCache == 1)&&(file_exists($lv_strFileCached))) {
$lv_intFileHandle = fopen($lv_strFileCached, "r"); $lv_strContents = fread($lv_intFileHandle, filesize($lv_strFileCached)); fclose($lv_intFileHandle);
} else { ob_start(); //****************************************************************************** //******************************************************************************
//código... Muito código
//****************************************************************************** //****************************************************************************** $lv_strContents = ob_get_contents(); echo $lv_strContents; ob_end_clean(); $lv_intFileHandle = fopen($lv_strFileCached, "w") or die("can’t open file"); fwrite($lv_intFileHandle, $lv_strContents); fclose($lv_intFileHandle); } //****************************************************************************** //****************************************************************************** ?>
Podemos inclusiva acrescentar um validador de tempo para verificar se necessitamos de refrescar o conteudo do ficheiro. Mas isso fica na vossa imaginação.
APM
Deixe um comentário
Tem de iniciar a sessão para publicar um comentário.