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
 

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

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.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:  12210
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von    schubertmedia
 
Beschreibung

In diesem Tutorial möchte ich euch erklären, wie Sie einen Dateicache realisieren kann. Häufig haben Sie das Problem, dass PHP relativ rechenintensive Prozesse generiert. Da gewisse Ausgaben nicht immer wieder ständig neu berechnet werden müssen, können Sie diese Ausgaben einmal berechnen und die Ausgabe in einer Textdatei für eine gewisse Zeit speichern. Dadurch spart Sie gewisse Rechenressourcen und der Seitenaufbau von der Seite wird schneller realisiert. Dadurch können Sie unter anderem 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 Sie aber zum Beispiel eine News-Seite haben, wo sich die Inhalte zum Beispiel einmal oder zweimal am Tag ändern, müssen Sie nicht die gesamten Abfragen an einer MySQL Datenbank ständig generieren. Wenn Sie diese Datei über eine Caching-Funktion generiert haben, wird der eigentliche Prozess zum Generieren der Daten erst wieder nach Ablauf der Caching-Zeit generiert.

Nachfolgend findet ihr als Erstes eine PHP-Funktion, womit sie überprüfen kann, ob bereits eine Cachedatei vorhanden ist und ob diese bisher nicht zu alt ist. Diese Funktion gibt true oder false zurück. Dadurch wissen Sie, dass die Cachedatei neu geschrieben werden muss oder auf die alte Datei zugegriffen werden kann.

Code für die Caches Check Funktion:

<?php

/**
* @abstract – Diese Funktion prüft bereits eine
Cachedatei angelegt wurde und gibt false
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 der 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 Sie 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 ($datei, 0757);
}
$ausgabe .= $inhalt;
} else {
/**
* alte Daten lesen in Cachedatei
*/
$handle = @fopen ($datei, "r");
while (!feof($handle)) {
$ausgabe .= fgets($handle, 4096);
}
fclose ($handle);
}
} else {
/**
* Daten anlegen in Cachedatei
*/
$handle = fopen($datei, "w");
fwrite($handle, $inhalt);
fclose ($handle);
if (@file_exists($datei) == true) {
@chmod ($datei, 0757);
}
$ausgabe .= $inhalt;
}
return $ausgabe;
}
?>


Jetzt haben wir beide Funktionen, damit wir diese Funktionen verwenden können, könnten Sie zum Beispiel nachfolgenden Code verwenden. 

<?php

$dateiname = 'datei';
if (cachen_check($dateiname, 300 ) == 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
\u\m H:i:s").' Uhr erstellt.';
cachen($dateiname, 300 , $ausgabe );
} else {
/**
* Cache lesen
*/
$ausgabe = cachen($dateiname, 300 , '' );
}
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 dieses Tutorial in der fortgeschrittenen Sektion gelistet. Diese Funktion ist natürlich ausbaufähig und soll ausschließlich die Verwendung von einem Cache demonstrieren.

 

Tags:

 

Artikel hinzufügen bei: