2017-03-03 10 views
0

私のPHPコードに問題があります。私はこの機能を備えたシンプルなキャッシュシステムを使用しています。それをしようとキャッシング後のPHPコード[ヘルプ]

// Cache Function 
function cachestart($min){ 
    global $here; 
    global $cachefile; 
    $cachedosyasi = 'cache/' . 'file' . md5($here); 
    if(file_exists($cachefile) && (time() - $min*60 < filemtime($cachefile))){ 
    include($cachefile); 
    die; 
    }else{ 
     ob_start(); 
     global $cache; 
     $cache = 1; 
    } 
} 

function cachefinish(){ 
    global $cache; 
    global $cachefile; 
    if(@$cache){ 
     $ch = fopen($cachefile, 'w'); 
     fwrite($ch, ob_get_contents()); 
     fclose($ch); 
     ob_end_flush(); 
    } 
} 

I'am:

-- Some Queries (Controls, is user logged etc.) 
<< Start Caching >> (With cachestart()) 
-- Some Queries (Show entries in database.) 
<< Stop Caching >> (With cachefinish()) 
-- Some Queries (Comment box) 

しかし、私は理由のないこの "死ぬ" ことができます。私はそれについて考えていない。

ありがとうございました!

+0

すべてのクエリが再び動作し、私はキャッシュ間の二重のすべてを見ます機能。 編集:誰かが「機能で死んでいる」と言っていますが、コメントは削除されています。 –

答えて

1

これは完全ではありませんが、既存のコードを使用しています。ただtrueまたはfalseを返すと、アプリケーションがそれに基づいて決定を下すことがあります。

function cachestart($min){ 
    global $cachefile; 
    if(file_exists($cachefile) && (time() - $min*60 < filemtime($cachefile))){ 
     include($cachefile); 
     //we are not caching 
     return false; 
    } else { 
     ob_start(); 
     //we are caching 
     return true; 
    } 
} 

は、アプリケーションの開始時に決定を行います。

if(!cachestart(60)) { 
    //page loaded from cache 
    //maybe do some queries for comment box 
    die(); //or call cachefinish() with a die() in there 
} 

//main application code 
関連する問題