phpcms v9緩存文件是怎樣生成的?
這篇文章介紹phpcms的緩存結(jié)構(gòu)
我并沒(méi)有做深入的學(xué)習(xí),但是phpcms的想法上卻是有他的過(guò)人之處,太令人折服了,這里分享phpcms緩存的一中實(shí)現(xiàn)方案
/include/cache.func.php
這里最先主要是定義了一些phpcms的緩存函數(shù),phpcms的緩存分為,表緩存,模型緩存,模型字段緩存,還有模塊緩存,首先這些都是基于表的緩存的。
最開(kāi)始有一個(gè)函數(shù)
function cache_all() { @set_time_limit(600); cache_common(); cache_module(); cache_model(); cache_category(); cache_area(); cache_type(); cache_member_group(); cache_role(); cache_author(); cache_keyword(); cache_copyfrom(); cache_pos(); cache_status(); cache_workflow(); tags_update(); return TRUE; }
這個(gè)函數(shù)就調(diào)用一大堆的緩存函數(shù)來(lái)生成緩存的。
首先第一個(gè)函數(shù) cache_common
大家可以看下面的注釋?zhuān)菍?前綴名_model,前綴名_category ,前綴名_ module,前綴名,前綴名_type,前綴名_area,等等寫(xiě)入到$CACHE數(shù)組的對(duì)應(yīng)下表之中 (比如model 表的數(shù)據(jù)$CACHE["model"]=$arr,$arr為phpcms_model表的數(shù)據(jù))
function cache_common() { global $db; $data = array(); $result = $db->query("SELECT `module`,`name`,`path`,`url`,`iscore`,`version` FROM `".DB_PRE."module` WHERE `disabled`=0"); while($r = $db->fetch_array($result)) { if(!$r['path']) $r['path'] = $r['module'] == 'phpcms' ? '' : $r['module'].'/'; if(!$r['url']) $r['url'] = $r['module'] == 'phpcms' ? '' : $r['module'].'/'; $data[$r['module']] = $r; } $db->free_result($result); $CACHE['MODULE'] = $data; //以上是將對(duì)應(yīng)的模塊寫(xiě)入$CACHE; $data = array(); $result = $db->query("SELECT * FROM `".DB_PRE."model` WHERE `disabled`=0"); while($r = $db->fetch_array($result)) { $data[$r['modelid']] = $r; } $db->free_result($result); $CACHE['MODEL'] = $data; $data = array(); //以上是對(duì)應(yīng)的 model表里的內(nèi)容寫(xiě)入數(shù)組$CACHE; $result = $db->query("SELECT `catid`,`module`,`type`,`modelid`,`catname`,`style`,`image`,`catdir`,`url`,`parentid`,`arrparentid`,`parentdir`,`child`,`arrchildid`,`items`,`citems`,`pitems`,`ismenu`,`letter` FROM `".DB_PRE."category` WHERE 1 ORDER BY `listorder`,`catid`"); while($r = $db->fetch_array($result)) { $r['url'] = url($r['url']); $data[$r['catid']] = $r; } $db->free_result($result); $CACHE['CATEGORY'] = $data; //以上是將所有的欄目寫(xiě)入$CACHE數(shù)組 $data = array(); $result = $db->query("SELECT `typeid`,`modelid`,`module`,`name`,`style`,`typedir`,`url` FROM `".DB_PRE."type` WHERE 1 ORDER BY `listorder`,`typeid`"); while($r = $db->fetch_array($result)) { $data[$r['typeid']] = $r; } $db->free_result($result); $CACHE['TYPE'] = $data; //以上是將所有的 類(lèi)別表里的數(shù)據(jù)寫(xiě)入$CACHE $data = array(); $result = $db->query("SELECT `areaid`,`name`,`style`,`parentid`,`arrparentid`,`child`,`arrchildid` FROM `".DB_PRE."area` WHERE 1 ORDER BY `listorder`,`areaid`"); while($r = $db->fetch_array($result)) { $data[$r['areaid']] = $r; } $db->free_result($result); $CACHE['AREA'] = $data; //所有的地區(qū)表寫(xiě)入$CACHE; $data = array(); $result = $db->query("SELECT `urlruleid`,`urlrule` FROM `".DB_PRE."urlrule` WHERE 1 ORDER BY `urlruleid`"); while($r = $db->fetch_array($result)) { $data[$r['urlruleid']] = $r['urlrule']; } $db->free_result($result); $CACHE['URLRULE'] = $data; //將所有的url規(guī)則寫(xiě)入緩存 $data = array(); $r = $db->get_one("SELECT `setting` FROM `".DB_PRE."module` WHERE `module`='phpcms'"); $setting = $r['setting']; eval("\$PHPCMS = $setting;"); if($PHPCMS['siteurl'] =='') $PHPCMS['siteurl'] = SITE_URL; $CACHE['PHPCMS'] = $PHPCMS; //最后調(diào)用cache_write方法將所有的數(shù)組寫(xiě)入common.php 位置/date/cache/common.php根據(jù)系統(tǒng)變量慧有所改動(dòng) cache_write('common.php', $CACHE); return $CACHE; }
phpcms表緩存的實(shí)現(xiàn)方式主要是:利用一個(gè)叫cache_table函數(shù)$table是要緩存的表名,$fileds 是查詢(xún)的字段名字,默認(rèn)為 ' * ',$where sql語(yǔ)句中的where 子句,$order 排序, $isline是否開(kāi)啟字段緩存默認(rèn)為不開(kāi)啟,如果開(kāi)啟表字段緩存和表緩存將同時(shí)進(jìn)行
function cache_table($table, $fields = '*', $valfield = '', $where = '', $order = '', $iscacheline = 0, $number = 0) { global $db; $keyfield = $db->get_primary($table); $data = array(); if($where) $where = " WHERE $where"; if(!$order) $order = $keyfield; $limit = $number ? "LIMIT 0,$number" : ''; $result = $db->query("SELECT $fields FROM `$table` $where ORDER BY $order $limit"); $table = preg_replace("/^".DB_PRE."(.*)$/", "", $table); while($r = $db->fetch_array($result)) { if(isset($r['setting']) && !empty($r['setting'])) { $setting = $r['setting']; eval("\$setting = $setting;"); unset($r['setting']); if(is_array($setting)) $r = array_merge($r, $setting); } $key = $r[$keyfield]; $value = $valfield ? $r[$valfield] : $r; $data[$key] = $value; if($iscacheline) cache_write($table.'_'.$key.'.php', $value); //表字段緩存 } $db->free_result($result); cache_write($table.'.php', $data) ;// 表緩存 }
將數(shù)據(jù)數(shù)組寫(xiě)入對(duì)應(yīng)的緩存文件,以上這個(gè)函數(shù)就是判斷下常量CACHE_PATH是否存在默認(rèn)是data/cache的路徑然后用file_put_contents 將緩存的數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的cachefile中
function cache_write($file, $array, $path = '') { if(!is_array($array)) return false; $array = "<?php\nreturn ".var_export($array, true).";\n?>"; $cachefile = ($path ? $path : CACHE_PATH).$file; $strlen = file_put_contents($cachefile, $array); @chmod($cachefile, 0777); return $strlen; }
至于其他的可以參照以上的方法進(jìn)行添加,大家可以查查看對(duì)應(yīng)的cache.func.php
//緩存模型表 function cache_model() { cache_table(DB_PRE.'model', '*', '', '', 'modelid', 1); } //緩存分類(lèi)表生成文件路徑是../data/cachecategory_catid.php function cache_category() { cache_table(DB_PRE.'category', '*', '', '', 'listorder,catid', 1); }
緩存類(lèi)別表生成路徑
../data/cache/type_typeid.php function cache_type() { cache_table(DB_PRE.'type', '*', '', '', 'listorder,typeid', 1); } //緩存地區(qū)列表
生成路徑:../data/cache/area_areaid.php
function cache_area() { cache_table(DB_PRE.'area', '*', '', '', 'listorder,areaid', 1); } //緩存用戶(hù)組表 //生成路徑:../data/cache member_grounp_group_id.php function cache_member_group() { cache_table(DB_PRE.'member_group', '*', '', '', 'groupid', 1); cache_table(DB_PRE.'member_group', '*', 'name', '', 'groupid', 0); } //緩存角色表 //生成路徑:../data/cache/role_roleid.php function cache_role() { cache_table(DB_PRE.'role', '*', 'name', '', 'listorder,roleid'); } //緩存作者表 //生成路徑:../data/cache/author_authorid.php function cache_author() { cache_table(DB_PRE.'author', '*', 'name', '', 'listorder,authorid', 0, 100); } function cache_keyword() { cache_table(DB_PRE.'keyword', '*', 'tag', '', 'listorder,usetimes', 0, 100); } function cache_copyfrom() { cache_table(DB_PRE.'copyfrom', '*', '', '', 'listorder,usetimes', 0, 100); } function cache_pos() { cache_table(DB_PRE.'position', '*', 'name', '', 'listorder,posid', 0); }
PHP中文網(wǎng),大量的免費(fèi)PHPCMS教程,歡迎在線學(xué)習(xí)!
Das obige ist der detaillierte Inhalt vonWie werden PHPCMS v9-Cache-Dateien generiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So springen Sie zur Detailseite in phpcms: 1. Verwenden Sie die Header-Funktion, um einen Sprunglink zu generieren. 2. Durchlaufen Sie die Inhaltsliste. 3. Rufen Sie den Titel und den Detailseitenlink des Inhalts ab.

PHP CMS ist ein PHP-basiertes Open-Source-Content-Management-System zur Verwaltung von Website-Inhalten. Zu seinen Merkmalen geh?ren Benutzerfreundlichkeit, leistungsstarke Funktionalit?t, Skalierbarkeit, hohe Sicherheit und kostenloses Open Source. Es kann Zeit sparen, die Website-Qualit?t verbessern, die Zusammenarbeit verbessern und Entwicklungskosten senken und wird h?ufig auf verschiedenen Websites wie Nachrichten-Websites, Blogs, Unternehmenswebsites, E-Commerce-Websites und Community-Foren verwendet.

phpcms ist nicht v?llig kostenlos. phpcms ist ein Open-Source-CMS-System, aber Open Source bedeutet nicht, dass es kostenlos ist. Es gibt zwei Versionen: die kostenlose Version und die kommerzielle Version. Die kostenlose Version ist auf den privaten, nicht kommerziellen Gebrauch beschr?nkt, w?hrend die kommerzielle Version den Erwerb einer Lizenz erfordert Verwenden Sie es für Forschungszwecke, und wenn es sich um eine kommerzielle Anwendung handelt, müssen Sie eine bestimmte Gebühr zahlen.

Titel: WeChat Login-Integrationsleitfaden: PHPCMS in Aktion Im heutigen Internetzeitalter ist Social Login zu einer der wesentlichen Funktionen einer Website geworden. Als eine der beliebtesten sozialen Plattformen in China wird die Login-Funktion von WeChat auch von immer mehr Websites genutzt. In diesem Artikel wird erl?utert, wie die WeChat-Anmeldefunktion in die PHPCMS-Website integriert wird, und es werden spezifische Codebeispiele bereitgestellt. Schritt 1: Registrieren Sie ein WeChat Open Platform-Konto. Zuerst müssen wir ein Entwicklerkonto auf der WeChat Open Platform registrieren und die entsprechenden Entwicklungsberechtigungen beantragen. Anmelden [Offene WeChat-Plattform]

Strategie zur Einstellung der Sicherheit von PHPCMS-Benutzernamen enthüllt Bei der Website-Entwicklung war die Sicherheit von Benutzerkonten schon immer ein Aspekt, auf den Entwickler gro?en Wert legen. Auch die Sicherheitseinstellungen des Benutzernamens sind von entscheidender Bedeutung, da der Benutzername nicht nur die Anmeldeinformationen des Benutzers darstellt, sondern auch die pers?nlichen Daten des Benutzers preisgeben und sogar Sicherheitsrisiken verursachen kann. In diesem Artikel wird die Strategie zur Einstellung der Benutzernamensicherheit in PHPCMS erl?utert und spezifische Codebeispiele bereitgestellt, auf die sich Entwickler beziehen k?nnen. 1. Verhindern Sie die Verwendung gebr?uchlicher Benutzernamen. Um die Sicherheit von Benutzernamen zu verbessern, sollten Entwickler verhindern, dass Benutzer überm??ig viele Benutzernamen verwenden

PHPCMS ist ein kostenloses Open-Source-Content-Management-System (CMS), das Folgendes bietet: Open Source, Modularit?t, Flexibilit?t, Benutzerfreundlichkeit und Community-Unterstützung. Es kann zum Erstellen verschiedener Arten von Websites verwendet werden, darunter Unternehmenswebsites, E-Commerce-Websites, Blogs und Community-Foren. Zu den technischen Anforderungen geh?ren: PHP 5.6 oder h?her, MySQL-, MariaDB- oder PostgreSQL-Datenbank und Apache- oder Nginx-Webserver.

Es gibt zwei bekannte Versionen von PHPCMS, n?mlich: 1. PHPCMS4, das benutzerdefinierte URL-Regeln unterstützt, ist sch?n und einfach zu verwenden und verfügt über viele Front-End-Plug-Ins, die Funktionen frei erweitern k?nnen . phpCMS2008R1, das die Verwaltung mehrerer Sprachen und mehrerer Standorte unterstützt. Der Manager ist praktisch, flexibel, sehr leichtgewichtig und l?uft schnell.

phpcms verwendet eine MySQL-Datenbank. phpcms ist ein PHP-Open-Source-Website-Managementsystem, das auf PHP+MYSQL als technischer Basis entwickelt wurde. PHPCMS V9 verwendet die OOP-Methode zum Aufbau des grundlegenden Betriebssystems. Die unterstützte PHP-Version ist PHP5 und h?her, und die unterstützte MYSQL-Version ist MySql 4.1 und h?her.
