Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 
Script Seite

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog Verzeichnis

Partner
Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
http://www.Hosterplus.de
speicherzentrum.d...
Bei den Anbieter bekommt man Webspace, Domains und...
http://www.speicherzentrum.de
 
 
 

Datei Cache mit PHP erstellen

Sie befinden sich: Home > Php Tutorial > Datei Cache mit PHP erstell...

Datei Cache mit PHP erstellen



Eintrag am:  27.10.2010
Hits / Besucher:  10101
Sprache: Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
 

Beschreibung


So in diesem Tutorial möchte ich euch erklären, wie man einen Dateicache realisieren kann. Häufig hat man das Problem, dass PHP relativ rechenintensive Prozesse generiert. Da gewisse Ausgaben nicht immer wieder ständig neu berechnet werden müssen, kann man diese Ausgaben einmal berechnen und die Ausgabe in einer Textdatei für eine gewisse Zeit speichern. Dadurch spart man gewisse Rechen Ressourcen und der Seitenaufbau von der Seite wird schneller realisiert. Dadurch kann man auch zum Beispiel die Anzahl der MySQL Abfragen in einem PHP-Script drastisch senken.

Natürlich macht das Caching keinen Sinn, bei Daten, die sich ständig ändern. Wenn man aber zum Beispiel eine News-Seite hat, wo sich die Inhalte zum Beispiel einmal oder zweimal am Tag ändern, muss man nicht die gesamten Abfragen an einer MySQL Datenbank ständig generieren. Wenn man diese Datei über eine Caching Funktion generiert hat, wird der eigentliche Prozess zum Generieren der Daten erst wieder nach Ablauf der Caching Zeit wieder generiert. Nachfolgend findet ihr als Erstes eine PHP-Funktion, womit man überprüfen kann, ob bereits eine Cachedatei vorhanden ist und ob diese noch nicht zu alt ist. Diese Funktion gibt true oder false zurück. Dadurch weiß man, dass die Cachedatei neu geschrieben werden muss oder auf die alte Datei zugegriffen werden kann.

Code für die Cache Check Funktion:

<?php
    
/**
    * @abstract - Diese Funktion prüft bereits eine
        Cachedatei angelegt wurde und gibt fallse
        oder true zurück. Wenn die Datei bereits
        angelegt wurde, wird überprüft ob die Caching
        Zeit bereits abgelaufen ist.
    * @var $datei - Dateiname der Cachedatei
    * @var $cachzeit - Zeit in Sekunden, bis eine neue
        Datei angelegt werden soll
    * @return true - Cache schreiben oder überschreiben
    * @return false - Cache lesen
    */
    
function cachen_check($datei$cachzeit 300 ) {
        
$datei './'.$datei.'.txt';
        
/**
        * Prüfen ob es die Datei gibt
        */
        
if (file_exists($datei) == true) {
            
/**
            * Alter das Datei prüfen
            */
            
if (filemtime($datei) < (time()-$cachzeit)) {
                
/**
                * Update alter Daten in Cachedatei
                */
                
$ausgabe true;
            } else {
                
/**
                *  alte Daten lesen in Cachedatei
                */
                
$ausgabe false;
            }
        } else {
            
/*
            * Daten anlegen in Cachedatei
            */
            
$ausgabe true;
        }
        return 
$ausgabe;
    }
?>

Nachdem wir den Status der Cachedatei ermittelt haben, können wir entsprechend bei einer true Rückgabe unserem Rechenprozess ausführen. Nachdem der Rechenprozess fertig ist, speichert man die Ausgabe, in eine Variable zwischen. Diese Variable übermitteln wir unserer nachfolgenden schreib Funktion und geben anschließend den Text wieder aus. Wenn der Status false zurückgegeben wurde, führen wir unseren Rechenprozess nicht aus und lesen ausschließlich unsere generierte Cachedatei ein. Und geben den Rückgabewert wieder mit echo aus. 

Code für die schreib Funktion:

<?php
    
/**
    * @abstract - Diese Funktion schreibt oder liest
        entsprechend die Cachedatei ein.
    * @var $datei - Dateiname der Cachedatei
    * @var $cachzeit - Zeit in Sekunden, bis eine neue
        Datei angelegt werden soll
    * @var $inhalt - Inhalt der in der Cachedatei
        geschrieben werden soll, wenn dieser noch
        nicht vorhanden ist.
    * @return string - Inhalt der Cachedatei
    */
    
function cachen($datei ''$cachzeit 300 ,
        
$inhalt '' ) {
        
$ausgabe '';
        
$datei './'.$datei.'.txt';
        
/**
        * Prüfen ob es die Datei gibt
        */
        
if (@file_exists($datei) == true) {
            
/**
            * Prüft ob die Datei noch gültig ist
            */
            
if (filemtime($datei) < (time()-$cachzeit)) {
                
/**
                *  Update alter Daten in Cachedatei
                */
                
$handle = @fopen($datei"w");
                
fwrite($handle$inhalt);
                
fclose ($handle);
                if (
file_exists($datei) == true) {
                    @
chmod ($datei0757);
                }
                
$ausgabe .= $inhalt;
            } else {
                
/**
                * alte Daten lesen in Cachedatei
                */
                
$handle = @fopen ($datei"r");
                while (!
feof($handle)) {
                    
$ausgabe .= fgets($handle4096);
                }
                
fclose ($handle);
            }
        } else {
            
/**
            * Daten anlegen in Cachedatei
            */
            
$handle fopen($datei"w");
            
fwrite($handle$inhalt);
            
fclose ($handle);
            if (@
file_exists($datei) == true) {
                @
chmod ($datei0757);
            }
            
$ausgabe .= $inhalt;
        }
        return 
$ausgabe;
    }
?>

So nun haben wir beide Funktionen, damit wir diese Funktionen verwenden können könnte man zum Beispiel nachfolgenden Code verwenden. 

<?php
    $dateiname 
'datei';
    if (
cachen_check($dateiname300 ) == true) {
        
/**
        * Cache schreiben
        */
        /**
        * An dieser Stelle könnte der stehen um die
            Variable $ausgabe zu befüllen.
        */
        
$ausgabe 'Der Inhalt wurde am '.date("d-m-Y
            um H:i:s"
).' Uhr erstellt.';
        
cachen($dateiname300 $ausgabe );
    } else {
        
/**
        * Cache lesen
        */
        
$ausgabe cachen($dateiname300 '' );
    }
    echo 
$ausgabe;
?>
 

Wenn ihr noch Fragen zu der Verwendung von diesen Funktionen habt, so nutzt bitte entweder unser Supportforum oder schreibt direkt einen Kommentar in unserer Facebook Fanseite. Bitte habt Verständnis dass ich in diesem Tutorial nicht auf jede einzelne kleine Funktion eingehe, daher ist auch dieses Tutorial in der fortgeschrittenen Sektion gelistet. Diese Funktion ist natürlich auch ausbaufähig und soll ausschließlich die Verwendung von einen Cache demonstrieren.

 

Tags


 

Verlink uns, wenn Dir das Tutorial gefallen hat:
Artikel hinzufügen bei: