Heim Backend-Entwicklung PHP-Tutorial Cache类的源码分析_PHP

Cache类的源码分析_PHP

Jun 01, 2016 pm 12:30 PM
cache file if 分析 文件 源码

Cache类的源码分析

一个Cache类的源码分析,学习Cache的人可以参考下

/*
用户需要事先定义的常量:
_CachePath_        模板缓存路径
_CacheEnable_        自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制
_ReCacheTime_        自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存
_ActionVar_        Action的GET变量

Sample:
$cache=new cache();
if ($cache->check()) {
        $template=$cache->read();
}else {
        ......
        $cache->write($template);
}
eval('echo $template;');
*/

class cache {

var $cachefile;
var $cachefilevar;

function cache() {
        //生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile
        //动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同
        $s=array(".","/");$r=array("_","");
        $this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];
        $this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);
}

//删除当前页/模块的缓存
function delete() {
        //删除当前页的缓存
        $d = dir(_CachePath_);
        $strlen=strlen($this->cachefilevar);
        //返回当前页的所有Cache文件组
        while (false !== ($entry = $d->read())) {
                    if (substr($entry,0,$strlen)==$this->cachefilevar) {
                            if (!unlink(_CachePath_."/".$entry)) {echo "Cache目录无法写入";exit;}
                    }
            }
}

//判断是否已Cache过,以及是否需要Cache
function check() {
        //如果设置了缓存更新间隔时间 _ReCacheTime_
        if (_ReCacheTime_+0>0)        {
                //返回当前页Cache的最后更新时间
                $var=@file(_CachePath_."/".$this->cachefilevar);$var=$var[0];
                //如果更新时间超出更新间隔时间则删除Cache文件
                if (time()-$var>_ReCacheTime_) {
                        $this->delete();$ischage=true;
                }
        }
        //返回当前页的Cache
        $file=_CachePath_."/".$this->cachefile;
        //判断当前页Cache是否存在 且 Cache功能是否开启
        return (file_exists($file) and _CacheEnable_ and !$ischange);
}

//读取Cache
function read() {
        //返回当前页的Cache
        $file=_CachePath_."/".$this->cachefile;
        //读取Cache文件的内容
        if (_CacheEnable_) return file_get_contents($file);
        else return false;
}

//生成Cache
function write($output) {
        //返回当前页的Cache
        $file=_CachePath_."/".$this->cachefile;
        //如果Cache功能开启
        if (_CacheEnable_) {
                //把输出的内容写入Cache文件
                $fp=@fopen($file,'w');
                if (!@fwrite($fp,$output)) {echo "模板Cache写入失败";exit;}
                @fclose($fp);
                //如果设置了缓存更新间隔时间 _ReCacheTime_
                if (_ReCacheTime_+0>0) {
                        //更新当前页Cache的最后更新时间
                        $file=_CachePath_."/".$this->cachefilevar;
                        $fp=@fopen($file,'w');
                        if (!@fwrite($fp,time())) {echo "Cache目录无法写入";exit;}
                        @fclose($fp);
                }
        }
}

}


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie übertrage ich Dateien von Quark Cloud Disk auf Baidu Cloud Disk? Wie übertrage ich Dateien von Quark Cloud Disk auf Baidu Cloud Disk? Mar 14, 2024 pm 02:07 PM

Quark Netdisk und Baidu Netdisk sind derzeit die am häufigsten verwendete Netdisk-Software zum Speichern von Dateien. Wenn Sie die Dateien in Quark Netdisk auf Baidu Netdisk speichern möchten, wie gehen Sie vor? In dieser Ausgabe hat der Herausgeber die Tutorial-Schritte zum Übertragen von Dateien vom Quark Network Disk-Computer auf die Baidu Network Disk zusammengestellt. Werfen wir einen Blick auf die Bedienung. Wie speichere ich Quark-Netzwerkfestplattendateien auf einer Baidu-Netzwerkfestplatte? Um Dateien von Quark Network Disk auf Baidu Network Disk zu übertragen, müssen Sie zunächst die erforderlichen Dateien von Quark Network Disk herunterladen, dann den Zielordner im Baidu Network Disk-Client auswählen und ihn öffnen. Ziehen Sie dann die von Quark Cloud Disk heruntergeladenen Dateien per Drag & Drop in den vom Baidu Cloud Disk-Client geöffneten Ordner oder verwenden Sie die Upload-Funktion, um die Dateien zu Baidu Cloud Disk hinzuzufügen. Überprüfen Sie nach Abschluss des Uploads unbedingt, ob die Datei erfolgreich in Baidu Cloud Disk übertragen wurde. Das ist es

Was tun, wenn der Fehlercode 0x80004005 angezeigt wird? Der Editor zeigt Ihnen, wie Sie den Fehlercode 0x80004005 beheben können. Was tun, wenn der Fehlercode 0x80004005 angezeigt wird? Der Editor zeigt Ihnen, wie Sie den Fehlercode 0x80004005 beheben können. Mar 21, 2024 pm 09:17 PM

Wenn Sie einen Ordner auf Ihrem Computer löschen oder dekomprimieren, wird manchmal das Dialogfeld „Fehler 0x80004005: Nicht spezifizierter Fehler“ angezeigt. Wie können Sie diese Situation lösen? Es gibt tatsächlich viele Gründe, warum der Fehlercode 0x80004005 angezeigt wird, aber die meisten davon werden durch Viren verursacht. Wir können die DLL erneut registrieren, um das Problem zu lösen. Nachfolgend erklärt Ihnen der Editor die Erfahrung beim Umgang mit dem Fehlercode 0x80004005 . Einige Benutzer erhalten bei der Verwendung ihres Computers den Fehlercode 0X80004005. Der Fehler 0x80004005 wird hauptsächlich dadurch verursacht, dass der Computer bestimmte Dynamic Link Library-Dateien nicht korrekt registriert oder dass eine Firewall keine HTTPS-Verbindungen zwischen dem Computer und dem Internet zulässt. Wie wäre es also?

Was ist die Datei hiberfil.sys? Kann hiberfil.sys gelöscht werden? Was ist die Datei hiberfil.sys? Kann hiberfil.sys gelöscht werden? Mar 15, 2024 am 09:49 AM

Vor kurzem haben viele Internetnutzer den Herausgeber gefragt: Was ist die Datei hiberfil.sys? Kann hiberfil.sys viel Speicherplatz auf Laufwerk C beanspruchen und gelöscht werden? Der Editor kann Ihnen mitteilen, dass die Datei hiberfil.sys gelöscht werden kann. Werfen wir einen Blick auf die Details unten. hiberfil.sys ist eine versteckte Datei im Windows-System und auch eine System-Ruhezustandsdatei. Es wird normalerweise im Stammverzeichnis des Laufwerks C gespeichert und seine Größe entspricht der Größe des installierten Speichers des Systems. Diese Datei wird verwendet, wenn sich der Computer im Ruhezustand befindet, und enthält die Speicherdaten des aktuellen Systems, damit dieser bei der Wiederherstellung schnell wieder in den vorherigen Zustand versetzt werden kann. Da seine Größe der Speicherkapazität entspricht, nimmt er möglicherweise mehr Festplattenspeicher ein. hiber

Wie schreibe ich if in C-Sprache, um mehrere Bedingungen zu beurteilen? Wie schreibe ich if in C-Sprache, um mehrere Bedingungen zu beurteilen? Mar 25, 2024 pm 03:24 PM

In der C-Sprache wird die if-Anweisung normalerweise verwendet, um einen bestimmten Codeblock basierend auf einer einzelnen Bedingung auszuführen. Es können jedoch mehrere Bedingungen kombiniert werden, um mithilfe logischer Operatoren wie &&, || und ! eine Entscheidung zu treffen. Einschließlich der Verwendung von logischem UND (&&) zur Beurteilung mehrerer Bedingungen, der Verwendung von logischem ODER (||) zur Beurteilung mindestens einer Bedingung, der Verwendung von logischem NICHT (!) zur Beurteilung der Negation einer einzelnen Bedingung sowie der Verschachtelung von if-Anweisungen und der Verwendung von Klammern um die Priorität zu klären.

Detaillierte Erklärung des Protokollanzeigebefehls im Linux-System! Detaillierte Erklärung des Protokollanzeigebefehls im Linux-System! Mar 06, 2024 pm 03:55 PM

In Linux-Systemen können Sie den folgenden Befehl verwenden, um den Inhalt der Protokolldatei anzuzeigen: Befehl tail: Der Befehl tail wird verwendet, um den Inhalt am Ende der Protokolldatei anzuzeigen. Dies ist ein allgemeiner Befehl zum Anzeigen der neuesten Protokollinformationen. tail [Option] [Dateiname] Zu den häufig verwendeten Optionen gehören: -n: Geben Sie die Anzahl der anzuzeigenden Zeilen an. Der Standardwert ist 10 Zeilen. -f: Überwachen Sie den Dateiinhalt in Echtzeit und zeigen Sie den neuen Inhalt automatisch an, wenn die Datei aktualisiert wird. Beispiel: tail-n20logfile.txt#Zeigen Sie die letzten 20 Zeilen der Datei logfile.txt an. tail-flogfile.txt#Überwachen Sie den aktualisierten Inhalt der Datei logfile.txt in Echtzeit. Head-Befehl: Der Head-Befehl wird verwendet, um den Anfang anzuzeigen der Protokolldatei

Ausführliche Erläuterung der Rolle von .ibd-Dateien in MySQL und der damit verbundenen Vorsichtsmaßnahmen Ausführliche Erläuterung der Rolle von .ibd-Dateien in MySQL und der damit verbundenen Vorsichtsmaßnahmen Mar 15, 2024 am 08:00 AM

Ausführliche Erläuterung der Rolle von .ibd-Dateien in MySQL und der damit verbundenen Vorsichtsmaßnahmen. MySQL ist ein beliebtes relationales Datenbankverwaltungssystem, und die Daten in der Datenbank werden in verschiedenen Dateien gespeichert. Unter diesen ist die .ibd-Datei eine Datendatei in der InnoDB-Speicher-Engine, die zum Speichern von Daten und Indizes in Tabellen verwendet wird. Dieser Artikel bietet eine detaillierte Analyse der Rolle der .ibd-Datei in MySQL und liefert relevante Codebeispiele, um den Lesern ein besseres Verständnis zu erleichtern. 1. Die Rolle von .ibd-Dateien: Speichern von Daten: .ibd-Dateien sind InnoDB-Speicher

Erstellen Sie Linux-„.a'-Dateien und führen Sie sie aus Erstellen Sie Linux-„.a'-Dateien und führen Sie sie aus Mar 20, 2024 pm 04:46 PM

Die Arbeit mit Dateien im Linux-Betriebssystem erfordert die Verwendung verschiedener Befehle und Techniken, die es Entwicklern ermöglichen, Dateien, Code, Programme, Skripts und andere Dinge effizient zu erstellen und auszuführen. Im Linux-Umfeld haben Dateien mit der Endung „.a“ ​​als statische Bibliotheken eine große Bedeutung. Diese Bibliotheken spielen eine wichtige Rolle in der Softwareentwicklung und ermöglichen Entwicklern die effiziente Verwaltung und gemeinsame Nutzung gemeinsamer Funktionen über mehrere Programme hinweg. Für eine effektive Softwareentwicklung in einer Linux-Umgebung ist es wichtig zu verstehen, wie „.a“-Dateien erstellt und ausgeführt werden. In diesem Artikel wird erläutert, wie Sie die Linux-Datei „.a“ ​​umfassend installieren und konfigurieren. Lassen Sie uns die Definition, den Zweck, die Struktur und die Methoden zum Erstellen und Ausführen der Linux-Datei „.a“ ​​untersuchen. Was ist L?

Analyse der Gründe, warum das sekundäre Verzeichnis von DreamWeaver CMS nicht geöffnet werden kann Analyse der Gründe, warum das sekundäre Verzeichnis von DreamWeaver CMS nicht geöffnet werden kann Mar 13, 2024 pm 06:24 PM

Titel: Analyse der Gründe und Lösungen, warum das sekundäre Verzeichnis von DreamWeaver CMS nicht geöffnet werden kann. Dreamweaver CMS (DedeCMS) ist ein leistungsstarkes Open-Source-Content-Management-System, das häufig bei der Erstellung verschiedener Websites verwendet wird. Allerdings kann es beim Erstellen einer Website manchmal vorkommen, dass das sekundäre Verzeichnis nicht geöffnet werden kann, was zu Problemen beim normalen Betrieb der Website führt. In diesem Artikel analysieren wir die möglichen Gründe, warum das sekundäre Verzeichnis nicht geöffnet werden kann, und stellen spezifische Codebeispiele zur Lösung dieses Problems bereit. 1. Mögliche Ursachenanalyse: Pseudostatisches Regelkonfigurationsproblem: während der Verwendung

See all articles