ホームページ  >  記事  >  バックエンド開発  >  PDO はデータ キャッシュをサポートします_PHP チュートリアル

PDO はデータ キャッシュをサポートします_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:07:16995ブラウズ

/**
*作者:Chu Shi
* QQ: 345610000
​*/
クラス myPDO は PDO を拡張します
{
public $cache_Dir = null //キャッシュディレクトリ
; public $cache_expireTime = 7200; //キャッシュ時間、デフォルトは 2 時間です

//キャッシュを使用したクエリ
パブリック関数 cquery($sql)
{
//キャッシュ保存用一般ディレクトリ
if ($this->cache_Dir == null || !is_dir($this->cache_Dir)) {
exit (「キャッシュ ディレクトリが間違っています!」);
} その他 {
$this->cache_Dir = str_replace("", "/", $this->cache_Dir);
$FileName = trim($this->cache_Dir, "/") . urlencode(trim($sql)) . }
//キャッシュ生成の判断
if (!file_exists($FileName) || time() - filemtime($FileName) > $this->cache_expireTime) {
If ($tmpRS =parent::query($sql)) {
$data = シリアル化($tmpRS->fetchAll());
Self::createFile($FileName, $data);
} その他 {
exit ("SQL 構文エラー
");
}
}
$this->readCache($FileName) を返します;
}

//キャッシュファイルを読み込む
プライベート静的関数 readCache($FilePath)
{
if (is_file($FilePath) && $Data = file_get_contents($FilePath)) {
新しいcache_PDOStatement(unserialize($Data))を返します;
}
false を返します;
}

//ファイルを生成
パブリック静的関数 createFile($FilePath, $Data = '')
{
if (file_put_contents($FilePath, $Data)) {
true を返します;
} その他 {
false を返します;
}
}
}
//キャッシュはStatementクラスを使用します
クラスcache_PDOStatement
{
プライベート $recordArr = array();
プライベート $cursorId = 0;
プライベート $recordCount = 0;

パブリック関数 __construct($arr)
{
$this->recordArr = $arr;
$this->recordCount = count($arr);
}

// レコードを返し、ポインタを 1 行下に移動します
パブリック関数 fetch()
{
if ($this->cursorId == $this->recordCount) {
false を返します;
} else if ($this->cursorId == 0) {
$this->cursorId++;
現在の($this->recordArr)を返します;
} その他 {
$this->cursorId++;
次を返す($this->recordArr);
}
}

//すべての結果を返します
パブリック関数 fetchAll()
{
$this->recordArr;
を返す }

//単一行、単一列のクエリ
パブリック関数 fetchColumn()
{
$tmpArr = 現在($this->recordArr);
$tmpArr[0]を返します;
}
}

使用方法

$db = 新しい myPDO('mysql: host = localhost;dbname=news','newsadmin','123456');

$db->cache_Dir = "cache" //キャッシュディレクトリを設定します

; $db->cache_expireTime = 7200; //キャッシュ時間を設定します
;

$rs = $db->cquery("select * from news limit 0,10"); //クエリの代わりにキャッシュ クエリ メソッド cquery を使用します

while ($row = $rs->fetch()) {
echo $row["F_title"] "
";
}

$rs = null;

$db = null;

http://www.bkjia.com/PHPjc/630439.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/630439.html技術記事 /*** 著者:Chu Shi * QQ:345610000*/ class myPDO extends PDO { public $cache_Dir = null; //キャッシュ ディレクトリ public $cache_expireTime = 7200; //キャッシュ時間、デフォルトは 2 時間 //バッファリングあり...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。