From 503e5ace066afbcd8e5dc688fd1b8ea143037896 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 4 Sep 2013 18:15:23 +0000 Subject: [PATCH] --- ogc.php | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/ogc.php b/ogc.php index d4014f0..a09b046 100644 --- a/ogc.php +++ b/ogc.php @@ -182,7 +182,14 @@ if(!isset($tema)){ $tipo = "intervalo"; } //nome do mapfile que ficara em cache -$agora = intval(time() / 1000); +$agora = intval(time() / 1000); +//acrescenta ao nome a indicacao do tipo de TMS +if(isset($_GET["tms"])){ + $agora .= "tms"; +} +if(isset($_GET["Z"]) && isset($_GET["X"])){ + $agora .= "google"; +} $nomeMapfileTmp = $dir_tmp."/ogc_".md5($tema)."_".$agora.".map"; $nomeMapfileTmp = str_replace(",","",$nomeMapfileTmp); $nomeMapfileTmp = str_replace(" ","",$nomeMapfileTmp); @@ -481,7 +488,7 @@ else{ } } // -//verifica se a requisicao e do tipo TMS. Se for, tenta gerar ou usar o cache +//verifica se a requisicao e do tipo TMS. // // //calcula a extensao geografica com base no x,y,z em requisições TMS @@ -512,7 +519,10 @@ if(isset($_GET["tms"])){ if($img->imagepath == ""){ exit; } - salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); + if($cache == true){ + salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); + } + renderNocacheTms(); } // //verifica se a chamada do servico e do tipo TILE no padrao do Google @@ -552,8 +562,12 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ $img = $oMap->draw(); if($img->imagepath == ""){ exit; - } - salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); + } + /** + * @TODO ativar cache + */ + //salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); + renderNocacheTms(); } if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){ $l = $oMap->getlayer(0); @@ -736,4 +750,40 @@ function texto2iso($texto){ } return $texto; } +function nomeRand($n=10) +{ + $nomes = ""; + $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $max = 51; + for($i=0; $i < $n; ++$i) + {$nomes .= $a{mt_rand(0, $max)};} + return $nomes; +} +function renderNocacheTms(){ + global $img,$i3georendermode,$dir_tmp; + if($i3georendermode == 0 || !isset($i3georendermode)){ + $nomer = $dir_tmp."/temp".nomeRand().".png"; + $img->saveImage($nomer); + header('Content-Length: '.filesize($nomer)); + header('Content-Type: image/png'); + header('Cache-Control: max-age=3600, must-revalidate'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); + header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200); + fpassthru(fopen($nomer, 'rb')); + } + if($i3georendermode == 1){ + ob_clean(); + header('Content-Type: image/png'); + $img->saveImage(); + } + if($i3georendermode == 2){ + $nomer = $dir_tmp."/temp".nomeRand().".png"; + $img->saveImage($nomer); + ob_clean(); + header('Cache-Control: public, max-age=22222222'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); + header("X-Sendfile: $nomer"); + header("Content-type: image/png"); + } +} ?> -- libgit2 0.21.2