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

ホームページ CMS チュートリアル PHPCMS phpcms v9 キャッシュ ファイルはどのように生成されますか?

phpcms v9 キャッシュ ファイルはどのように生成されますか?

Jan 14, 2020 am 09:53 AM
phpcms

phpcms v9 キャッシュ ファイルはどのように生成されますか?

phpcms v9緩存文件是怎樣生成的?

這篇文章介紹phpcms的緩存結(jié)構(gòu)

我并沒有做深入的學(xué)習(xí),但是phpcms的想法上卻是有他的過人之處,太令人折服了,這里分享phpcms緩存的一中實現(xiàn)方案

/include/cache.func.php

這里最先主要是定義了一些phpcms的緩存函數(shù),phpcms的緩存分為,表緩存,模型緩存,模型字段緩存,還有模塊緩存,首先這些都是基于表的緩存的。

最開始有一個函數(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;
}

這個函數(shù)就調(diào)用一大堆的緩存函數(shù)來生成緩存的。

首先第一個函數(shù) cache_common

大家可以看下面的注釋,是將 前綴名_model,前綴名_category ,前綴名_ module,前綴名,前綴名_type,前綴名_area,等等寫入到$CACHE數(shù)組的對應(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;
//以上是將對應(yīng)的模塊寫入$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();
//以上是對應(yīng)的 model表里的內(nèi)容寫入數(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;
//以上是將所有的欄目寫入$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;
//以上是將所有的 類別表里的數(shù)據(jù)寫入$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ū)表寫入$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ī)則寫入緩存
$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ù)組寫入common.php 位置/date/cache/common.php根據(jù)系統(tǒng)變量慧有所改動
cache_write('common.php', $CACHE);
    
return $CACHE;
}

phpcms表緩存的實現(xiàn)方式主要是:利用一個叫cache_table函數(shù)$table是要緩存的表名,$fileds 是查詢的字段名字,默認(rèn)為 ' * ',$where sql語句中的where 子句,$order 排序, $isline是否開啟字段緩存默認(rè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ù)組寫入對應(yīng)的緩存文件,以上這個函數(shù)就是判斷下常量CACHE_PATH是否存在默認(rèn)是data/cache的路徑然后用file_put_contents 將緩存的數(shù)據(jù)寫入到對應(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;
}

至于其他的可以參照以上的方法進行添加,大家可以查查看對應(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);
}
//緩存分類表生成文件路徑是../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);
}

緩存類別表生成路徑

../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);
}
//緩存用戶組表
//生成路徑:../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),大量的免費PHPCMS教程,歡迎在線學(xué)習(xí)!

以上がphpcms v9 キャッシュ ファイルはどのように生成されますか?の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

phpcmsで詳細ページに飛ぶ方法 phpcmsで詳細ページに飛ぶ方法 Jul 27, 2023 pm 05:23 PM

phpcms で詳細ページにジャンプする方法: 1. header 関數(shù)を使用してジャンプ リンクを生成します; 2. コンテンツ リストをループします; 3. コンテンツのタイトルと詳細ページのリンクを取得します; 4. ジャンプ リンクを生成します。

phpcmsとはどのようなフレームワークですか? phpcmsとはどのようなフレームワークですか? Apr 20, 2024 pm 10:51 PM

PHP CMS は、Web サイトのコンテンツを管理するための PHP ベースのオープンソース コンテンツ管理システムであり、使いやすさ、強力な機能、拡張性、高いセキュリティ、無料のオープンソースが特徴です。時間を節(jié)約し、Web サイトの品質(zhì)を向上させ、コラボレーションを強化し、開発コストを削減することができ、ニュース Web サイト、ブログ、企業(yè) Web サイト、電子商取引 Web サイト、コミュニティ フォーラムなどのさまざまな Web サイトで広く使用されています。

phpcmsって無料じゃないの? phpcmsって無料じゃないの? Mar 01, 2023 am 10:24 AM

phpcms は完全に無料ではありません。 phpcms はオープン ソースの cms システムですが、オープン ソースは無料という意味ではありません。無料版と商用版の 2 つのバージョンがあります。無料版は個人の非営利使用に限定されますが、商用版はライセンスの購入が必要です。個人でも使用できます。研究目的で使用する場合は、商用利用する場合は一定の料金を支払う必要があります。

WeChat ログイン統(tǒng)合ガイド: PHPCMS 実踐的な戦闘 WeChat ログイン統(tǒng)合ガイド: PHPCMS 実踐的な戦闘 Mar 29, 2024 am 09:18 AM

タイトル: WeChat ログイン統(tǒng)合ガイド: PHPCMS の実踐 今日のインターネット時代において、ソーシャル ログインは Web サイトの重要な機能の 1 つになりました。中國で最も人気のあるソーシャル プラットフォームの 1 つである WeChat のログイン機能は、ますます多くの Web サイトでも使用されています。この記事では、WeChat ログイン機能を PHPCMS Web サイトに統(tǒng)合する方法と、具體的なコード例を紹介します。ステップ 1: WeChat オープン プラットフォーム アカウントを登録する まず、WeChat オープン プラットフォームに開発者アカウントを登録し、対応する開発権限を申請する必要があります。ログイン [WeChatオープンプラットフォーム]

PHPCMS ユーザー名のセキュリティ設(shè)定戦略が明らかに PHPCMS ユーザー名のセキュリティ設(shè)定戦略が明らかに Mar 14, 2024 pm 12:06 PM

PHPCMS ユーザー名のセキュリティ設(shè)定戦略が明らかに Web サイト開発において、ユーザー アカウントのセキュリティは常に開発者が非常に重要視している側(cè)面です。ユーザー名はユーザーのログイン認(rèn)証情報であるだけでなく、ユーザーの個人情報が公開され、さらにはセキュリティ リスクを引き起こす可能性があるため、ユーザー名のセキュリティ設(shè)定も重要です。この記事では、PHPCMS でのユーザー名のセキュリティ設(shè)定戦略を明らかにし、開発者が參照できる具體的なコード例を示します。 1. 共通のユーザー名の使用を防止する ユーザー名のセキュリティを向上させるために、開発者はユーザーが過剰なユーザー名を使用しないようにする必要があります。

phpcms とはどういう意味ですか? phpcms とはどういう意味ですか? Apr 20, 2024 pm 10:39 PM

PHPCMS は、オープンソース、モジュール性、柔軟性、使いやすさ、コミュニティ サポートを特徴とする無料のオープンソース コンテンツ管理システム (CMS) です。企業(yè) Web サイト、電子商取引 Web サイト、ブログ、コミュニティ フォーラムなど、さまざまな種類の Web サイトの作成に使用できます。技術(shù)要件には、PHP 5.6 以降、MySQL、MariaDB または PostgreSQL データベース、Apache または Nginx Web サーバーが含まれます。

phpcms にはどのようなバージョンがありますか? phpcms にはどのようなバージョンがありますか? Jun 14, 2023 pm 01:13 PM

phpcms には 2 つのよく知られたバージョンがあります: 1. カスタム URL ルールをサポートする phpCMS4 ウェブサイト管理の背景が美しく使いやすく、機能を自由に拡張できるフロントエンド プラグインが豊富です。 . 多言語、マルチサイト管理、ページをサポートする phpCMS2008R1 マネージャーは便利で、柔軟で、非常に軽量で、高速に実行されます。

phpcms はどのデータベースを使用しますか? phpcms はどのデータベースを使用しますか? Feb 21, 2023 pm 06:57 PM

phpcms は mysql データベースを使用します。 phpcms は、PHP + MYSQL を技術(shù)基盤として使用して開発された PHP オープンソース Web サイト管理システムです。 PHPCMS V9 は基本的な動作フレームワークの構(gòu)築に OOP 方式を採用しており、サポートされる PHP バージョンは PHP5 以降、サポートされる MYSQL バージョンは MySql 4.1 以降です。

See all articles