キャッシュ.func.php

WBOY
WBOYオリジナル
2016-06-23 14:34:43916ブラウズ

関数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;
}
関数cache_common( )
{
global $db;
$data = array();
$result = $db->query("SELECT `module`,`name`,`path`,`url`,`iscore`,` version` FROM `".DB_PRE."module` WHERE `disabled`=0");
//モジュールテーブルの基本データを取得します。 module はモジュールの英語名、name は中国語名、パスはそのディレクトリ、URL はパス データと同じであり、ディレクトリも表します。 iscore は組み込みコア モジュールであるかどうかを決定し、version はバージョン番号です
while($r = $db->fetch_array($) result))
{
if(!$r['path']) $r['path'] = $r['module'] == 'phpcms' '' : $r['module'].' /'; //パスが指定されていない場合はモジュールを設定します phpcms
if(!$r['url']) $r['url'] = $r['module'] == 'phpcms' ? '' : $r['module'].'/'; // //パスが指定されていない場合にモジュールが URL を指すように設定します
$data[$r['module']] = $r;// value=array $r
}
$db->free_result($result) ;
$CACHE['MODULE'] = $data; //値にはパスと URL が含まれます。さらに、すべてのモジュールのパス/URL である必要があります
$data = array();
$result = $db ->query("SELECT * FROM `".DB_PRE."model` WHERE `disabled`=0 "); //コンテンツ テンプレートをロードします `disabled`=0"、つまり、閉じられるように設定されていないモデル テーブルは次のとおりです
// No. フィールド タイプ Null キー デフォルト値 説明
//1 modelid | tinyint(3) unsigned NO PRI | モデル ID auto_increment
//2 name varchar(30) NO | モデル名
//3 description varchar(255) NO 説明
//4 tablename varchar(20) NO |
//5 itemname varchar(10) NO | プロジェクト名
//6 itemunit varchar(10) NO | プロジェクト単位
//7 workflowid tinyint(3) unsigned NO 0 | NO | 列ホームページ テンプレート
//9 template_list varchar(30) NO | 列リスト ページ テンプレート
//10 template_show varchar(30) NO | 印刷ページ テンプレート
/ /12 ishtml tinyint(1) unsigned NO 0 | HTML を生成するかどうか
//13 category_urlruleid tinyint(1) unsigned NO 0 | 列 URL ルール
//14 show_urlruleid tinyint(1) unsigned NO 0 | /15 有効検索 tinyint(1) 符号なし NO 1 |
//16 ischeck tinyint(1) 符号なし NO 1 |
//17 is関連 tinyint(1) 符号なし NO 1 |
//18 無効 tinyint(1) 符号なし NO 0 |無効
//19 modeltype tinyint(1) unsigned NO 0 | Type
while($r = $db->fetch_array($result))
{
$data[$r['modelid']] = $r; //すべてのmodel_Idを取得
}
$db->free_result($result);
$CACHE['MODEL'] = $data; //キャッシュ変数を与える
$data = array();
$result = $db ->query("SELECT `catid`,`module`,`type`,`modelid`,`catname`,`style`,`image` ,`catdir`,`url`,`parentid`,`arrparentid` ,`parentdir`,`child`,`arrchildid`,`items`,`ismenu` FROM `".DB_PRE."category` WHERE 1 ORDER BY ` listorder`,`catid`");
//マシン上の上記の SQL ステートメントの結果は
//cartoary テーブル構造フィールド タイプ Null キー デフォルト値 説明
//1 catid smallint(5) unsigned NO PRI | MUL | モジュール
//3 型 tinyint(1) unsigned NO 0 | カラム型
//4 modelid tinyint(3) unsigned NO 0 | モデル ID
//5parentid smallint(5) unsigned NO 0 | //6 arrparentid varchar(255) NO | すべての親列 ID
//7 子 tinyint(1) unsigned NO 0 サブ列があるかどうか
// 8 arrchildid mediatext NO | すべてのサブ列 ID
//9 catname varchar(30) NO | 列名
//10 スタイル varchar(5) NO | スタイル
//11 列画像
// 12 説明 mediatext NO | 100) いいえ | 親ディレクトリ
//14 catdir varchar(30) いいえ | url varchar(100) いいえ リンク
//16 コンテンツ
//17 項目 mediaint( 8) unsigned NO 0 | メッセージ数
//18 ヒット数 int(10) unsigned NO 0 | クリック数
//19 設定 mediatext NO 設定
//20 listorder smallint (5) unsigned NO 0 | /21 ismenu tinyint(1) unsigned NO 1 | ナビゲーションに表示
//つまり、ディレクトリツリーが生成されます
while($r = $db->fetch_array($result))
{
$r['url '] = url($r['url']); // url varchar(100) NO | リンクが生成されると、/module_directory/index.html
$data[ $r['catid' ]] = $r; //ディレクトリID。ここから呼び出されたデータをテストしました。
}
$db ->free_result($result);
$CACHE['CATEGORY'] = $data; //今後の呼び出しのためにキャッシュ変数を与える
$data = array();
$result = $db->query("SELECT `typeid`,`module`,` name `,`style`,`typedir`,`url` FROM `".DB_PRE."type` WHERE 1 ORDER BY `listorder`,`typeid`");
// 1 リンクのデフォルト分類
// 2 error_report のタイプミス
// 3 error_report 無効な URL
// 0 は内部列カテゴリのようです
while($r = $db->fetch_array($result))
{
$data[$r['typeid']] = $ r ;
}
$db->free_result($result);
$CACHE['TYPE'] = $data;
$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;
$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 ルール 2008 のデフォルトは it/product/2006/1010/1_2.html 形式です
$data = array();
$r = $db->get_one("SELECT `setting` FROM `".DB_PRE."module` WHERE `module`='phpcms'");
//SQL で判明、以下のデータはウェブサイト構成の基本情報であり、バックグラウンドで設定してこのテーブルに書き込むことができます
//----------------------- --- --------------------------------------------------- ---
$setting = $r['setting'];
eval("$PHPCMS = $setting;");
if($PHPCMS['siteurl'] =='') $PHPCMS['siteurl'] = SITE_URL; // 'siteurl ' => 'http://127.0.0.1/phpcms/',
$CACHE['PHPCMS'] = $PHPCMS; //上記で生成された $CACHE を変換します。 変数は common.php に書き込まれ、data/cache/common.php を形成します
return $CACHE;
}
function queue_module()
{
//この関数の目的は、構成情報を生成することです単一ページの場合、以前の設定に関する基本的な Web サイト情報とモジュール情報を組み合わせて新しい配列を作成し、それを /dada/cache/module_xxx.php
global $db;
$data = array();
$ に書き込みます。 result = $db ->query("SELECT `モジュール`,`名前`,`パス`,`url`,`iscore`,`バージョン`,`公開日`,`インストール日`,`更新日`,`設定` 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']) // URL が空の場合、データベースの観点からは、これら 2 つの値は通常同じです
{
$r['url'] = $r['module'] == 'phpcms' ? '' : $ r['module'].'/';
$db->query("UPDATE `".DB_PRE."module` SET `url`='$r[url]' WHERE module='$r[モジュール] ' LIMIT 1");
}
if($r['setting'])
{
$setting = $r['setting'];
eval("$setting = $setting ;"); //設定を変更 新しいデータ変数を与える
unset($r['setting']); //配列 r 内の設定変数をクリアする,
if(is_array($setting)) $r = array_merge( $r, $setting);
/ / この文に注目して、設定配列を `module`、`name`、`path`、`url`、`iscore`、`version`、`publishdate`、とマージします。 `installdate`, `$r モジュールの updatedate `後で呼び出すための情報
}
cache_write('module_'.$r['module'].'.php', $r); // module_xxx.php を生成します。ここでこの文を実行すると、最新のモジュール構成情報が生成されます。これには、最も基本的なデータが含まれ、Web サイトのコンテンツは含まれません
}
$db->free_result($result);
}
function cache_model() //Generateモデルデータ
{
cache_table(DB_PRE .'model', '*', '', '', 'modelid', 1);
}
function catch_category() //カタログデータを生成します
{
cache_table(DB_PRE.' category', '*', ' ', '', 'listorder,catid', 1);
}
functioncache_type() //列カテゴリデータを生成
{
cache_table(DB_PRE.'type', '*', '', '', 'listorder ,typeid', 1);
}
functioncache_area() //エリアデータを生成
{
cache_table(DB_PRE.'area', '*', '', '', 'listorder ,areaid', 1);
}
functioncache_member_group() //ユーザー権限グループデータを生成
{
cache_table(DB_PRE.'member_group', '*', '', '', 'groupid', 1);
cache_table(DB_PRE.'member_group', '*', 'name', '', 'groupid', 0);
}
function catch_role() //管理者、列編集者などのユーザーロールデータを生成します
{
cache_table(DB_PRE.'role', '* ', 'name', '', 'listorder,roleid');
}
function catch_author() //ニュース著者データを生成する
{
cache_table(DB_PRE.'author' , '*', 'name', '' , 'listorder,authorid', 0, 100);
}
functioncache_keyword()//タグデータを生成
{
cache_table(DB_PRE.'keyword', '*', 'tag', '', 'listorder,usetimes ', 0, 100);
}
function cache_copyfrom() //新しい来源構成表
{
cache_table(DB_PRE.'copyfrom', '*', '', '', 'listorder,usetimes', 0, 100);
}
function queue_pos() // 位置データベースを生成
{
cache_table(DB_PRE.'position', '*', 'name', '', 'listorder,posid', 0);
}
function cache_status() // 状態态数据
{
global $db;
$array = array();
$result = $db->query("SELECT * FROM `".DB_PRE."status` ORDER BY `status` ASC");
while($r = $db->fetch_array($result))
{
$array[$r['status']] = $r['name'];
}
cache_write('status.php', $array);
return $array;
}
function cache_workflow() // 工作流
{
global $db;
$array = array();
$result = $db->query("SELECT * FROM `".DB_PRE. "workflow` ORDER BY `workflowid` ASC");
while($r = $db->fetch_array($result))
{
$array[$r['workflowid']] = $r['name' ];
}
cache_write('workflow.php', $array);
return $array;
}
functioncache_formguid()
{
cache_table(DB_PRE.'formguide', '*', '', '', 0);
}
//生成表のキャッシュ文件関数
//本関数数会はデータ库中,按主键ID生成表のキャッシュ文件文例,典型例は /data/cache/下カテゴリー_*.php の文件
関数cache_table($table, $fields = '*', $valf​​ield = '', $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"); //sql
$table = preg_replace("/^".DB_PRE."(.*)$/", "http://www.cnblogs.com/igaofen/admin/file://0.0.0.1/", $テーブル); //取テーブル名去掉了表前缀
while($r = $db->fetch_array($result))
{
if(isset($r['setting']) && !empty($r['setting '])) //一行データ中の設定が 1 つの数組であるため、变量を前のマージとして取り出す必要があります
{
$setting = $r['setting'];
eval("$setting = $設定;");
unset($r['setting']);
if(is_array($setting)) $r = array_merge($r, $setting); //マージ两个组组
}
$key = $r[$keyfield];
$value = $valf​​ield ? $r[$valf​​ield] : $r;
$data[$key] = $value;
if($iscacheline)cache_write($table.'_'.$key.'.php', $value); // キャッシュ文件生成,格式は表名_主键id.php $iscacheline=1 表示キャッシュ生成否不可开启
}
$db->free_result($result);
cache_write($table.'.php', $data); // 生成表の全データ例/data/caceh/category.php 可用次のデータデータベース構造会明白了
}
?>

本文来源CSDN博客:http://blog.csdn.net/guwenzhong/アーカイブ/2009/03/05/3959505.aspx

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。