国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim CMS-Tutorial PHPCMS Wie werden PHPCMS v9-Cache-Dateien generiert?

Wie werden PHPCMS v9-Cache-Dateien generiert?

Jan 14, 2020 am 09:53 AM
phpcms

Wie werden PHPCMS v9-Cache-Dateien generiert?

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.&#39;model&#39;, &#39;*&#39;, &#39;&#39;, &#39;&#39;, &#39;modelid&#39;, 1);
}
//緩存分類(lèi)表生成文件路徑是../data/cachecategory_catid.php
function cache_category()
{
cache_table(DB_PRE.&#39;category&#39;, &#39;*&#39;, &#39;&#39;, &#39;&#39;, &#39;listorder,catid&#39;, 1);
}

緩存類(lèi)別表生成路徑

../data/cache/type_typeid.php
function cache_type()
{
cache_table(DB_PRE.&#39;type&#39;, &#39;*&#39;, &#39;&#39;, &#39;&#39;, &#39;listorder,typeid&#39;, 1);
}
//緩存地區(qū)列表

生成路徑:../data/cache/area_areaid.php

function cache_area()
{
cache_table(DB_PRE.&#39;area&#39;, &#39;*&#39;, &#39;&#39;, &#39;&#39;, &#39;listorder,areaid&#39;, 1);
}
//緩存用戶(hù)組表
//生成路徑:../data/cache member_grounp_group_id.php
function cache_member_group()
{
cache_table(DB_PRE.&#39;member_group&#39;, &#39;*&#39;, &#39;&#39;, &#39;&#39;, &#39;groupid&#39;, 1);
cache_table(DB_PRE.&#39;member_group&#39;, &#39;*&#39;, &#39;name&#39;, &#39;&#39;, &#39;groupid&#39;, 0);
}
//緩存角色表
//生成路徑:../data/cache/role_roleid.php
function cache_role()
{
cache_table(DB_PRE.&#39;role&#39;, &#39;*&#39;, &#39;name&#39;, &#39;&#39;, &#39;listorder,roleid&#39;);
}
//緩存作者表
//生成路徑:../data/cache/author_authorid.php
function cache_author()
{
cache_table(DB_PRE.&#39;author&#39;, &#39;*&#39;, &#39;name&#39;, &#39;&#39;, &#39;listorder,authorid&#39;, 0, 100);
}
function cache_keyword()
{
cache_table(DB_PRE.&#39;keyword&#39;, &#39;*&#39;, &#39;tag&#39;, &#39;&#39;, &#39;listorder,usetimes&#39;, 0, 100);
}
function cache_copyfrom()
{
cache_table(DB_PRE.&#39;copyfrom&#39;, &#39;*&#39;, &#39;&#39;, &#39;&#39;, &#39;listorder,usetimes&#39;, 0, 100);
}
function cache_pos()
{
cache_table(DB_PRE.&#39;position&#39;, &#39;*&#39;, &#39;name&#39;, &#39;&#39;, &#39;listorder,posid&#39;, 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!

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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

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)

Hei?e Themen

PHP-Tutorial
1502
276
So springen Sie zur Detailseite in phpcms So springen Sie zur Detailseite in phpcms Jul 27, 2023 pm 05:23 PM

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.

Welches Framework ist phpcms? Welches Framework ist phpcms? Apr 20, 2024 pm 10:51 PM

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.

Ist PHPCMS nicht kostenlos? Ist PHPCMS nicht kostenlos? Mar 01, 2023 am 10:24 AM

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.

WeChat Login-Integrationsleitfaden: PHPCMS Practical Combat WeChat Login-Integrationsleitfaden: PHPCMS Practical Combat Mar 29, 2024 am 09:18 AM

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]

Sicherheitseinstellungsstrategie für PHPCMS-Benutzernamen enthüllt Sicherheitseinstellungsstrategie für PHPCMS-Benutzernamen enthüllt Mar 14, 2024 pm 12:06 PM

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

Was bedeutet phpcms? Was bedeutet phpcms? Apr 20, 2024 pm 10:39 PM

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.

Welche PHPCMS-Versionen gibt es? Welche PHPCMS-Versionen gibt es? Jun 14, 2023 pm 01:13 PM

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.

Welche Datenbank verwendet phpcms? Welche Datenbank verwendet phpcms? Feb 21, 2023 pm 06:57 PM

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.

See all articles