キャッシュ.func.php
関数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 = '*', $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"); //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 = $valfield ? $r[$valfield] : $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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。
