PHP プログラムの高速化探索キャッシュ出力_PHP チュートリアル

WBOY
リリース: 2016-07-20 11:17:11
オリジナル
704 人が閲覧しました

コンテンツキャッシュ出力 PEAR キャッシュ

次に、より一般的に使用されるキャッシュ テクノロジの調査を開始します。これがこの記事の焦点でもあります。まず、PEAR のキャッシュ パッケージを使用します。 PEAR は、ファイル、データベース、またはメモリにコンテンツをキャッシュできます。ファイルを例に挙げてみましょう。

以下はキャッシュなしのPHPアプレットです:

pear_content_cache1.php

<?php
echo "これがコンテンツです。

"; echo "現在時刻は" . date('M-d-Y H:i:s A', time()) . ?>

上記のプログラムは非常に単純ですが、これにキャッシュを追加します。

pear_content_cache2.php

<?php

require_once 'キャッシュ/Output.php';


//書き込み可能でなければならないキャッシュ ディレクトリを設定します

$cacheDir = './pear_cache'; $cache = new Cache_Output('file',array('cache_dir' => $cacheDir));


// nocache 変数が空の場合、キャッシュ内のコンテンツを使用します
//最新のコンテンツを取得したい場合は、それを nocache 変数に割り当てる必要があります

if (empty($_REQUEST['nocache']))

{
// 一意のキャッシュ識別子を作成します
// リクエスト + Cookie 情報
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS)); }
それ以外は
{
//最新のコンテンツを取得したい場合は、ID は空です
$cache_id = null; }

//キャッシュIDに対応するキャッシュコンテンツが利用可能か確認します
if ($content = $cache->start($cache_id))
{
//キャッシュはすでに存在するので、直接出力してスクリプトを終了します

$content をエコーし​​ます。 終了(); }


//コンテンツがキャッシュに存在しないため、新しいコンテンツを生成してキャッシュに書き込みます
echo "これがコンテンツです。

"; echo "現在時刻は" . date('M-d-Y H:i:s A', time()) .
// コンテンツをキャッシュに書き込みます
echo $cache->end(); ?>

これら 2 つのファイルをそれぞれ更新すると、pear_content_cache1.php の「現在時刻は」という行の時刻が更新によって変化しますが、pear_content_cache2.php のこの行は変化しないことがわかります。これは、pear_content_cache2.php がキャッシュを使用して、ユーザーが要求したコンテンツを静的ファイルに保存するためです。ユーザーが再度リクエストすると、プログラムがコンテンツを動的に生成する必要がなく、ファイルから直接出力されます。

pear_content_cache2.phpの場合、ユーザーがキャッシュ内の古い情報ではなく最新の情報を読みたい場合。その後、 http://…/pear_content_cache2.php?nocache=1 を使用してアクセスすると、キャッシュ機能が無効になります。更新すると、それに応じて時間が変更されることを確認します。

PEAR コンテンツ キャッシュ クラスの使用法を要約すると:

1. PEAR パッケージを含める場合は、必ず正しいパスを設定してください。

2. Output.php にキャッシュ クラスが含まれます

require_once 'キャッシュ/Output.php';

3.キャッシュディレクトリを設定します

$cacheDir = './pear_cache';

このディレクトリが書き込み可能であることを確認します。キャッシュ データは、このディレクトリのサブディレクトリに書き込まれます。

4.出力キャッシュオブジェクトを作成します

$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));

最初のパラメータは「ファイル」ベースのキャッシュを使用することを示し、2 番目のパラメータはキャッシュ ディレクトリに関連付けられた配列です。

5.一意のキャッシュ ID を生成します

$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));

ここでの $cache オブジェクトのgenerateID() メソッドは、このリクエストを一意に識別し、他のリクエストと区別するための情報の配列 (URL、HTTP POST データ、および HTTP Cookie) を提供します。

6.キャッシュIDに対応するキャッシュデータが既に存在するかどうかの論理判定文を追加し、存在する場合はデータを取得してスクリプトを終了します。

if ($content = $cache->start($cache_id))

{

$content をエコーし​​ます。 終了(); }

7. 上記の論理ステートメントの後にコンテンツを生成するコードを配置し、キャッシュ オブジェクトの使用を終了します。

echo $cache->end();

関数キャッシュ出力PEARキャッシュ

PEARは出力内容をキャッシュするだけでなく、特定の関数を呼び出した結果をキャッシュすることもできます。これは非常に興味深い機能です。プログラムで特定の関数が頻繁に使用され、呼び出しの結果が同じである場合、特にこの関数の実行が遅い場合には、試してみることをお勧めします。

次に、非常にゆっくりと実行される関数、slowFunction() へのバッファリングされた呼び出しを実装します。

<?php

require_once 'キャッシュ/関数.php';

$cacheDir = './pear_cache/'; $cache = 新しい Cache_Function('file',array('cache_dir' => $cacheDir)); $arr = array('リンゴ', '梨', 'スイカ'); $cache->call('slowFunction', $arr); echo '
';

$arr = array('リンゴ', '梨', 'スイカ'); スロー関数($arr);

関数slowFunction($arr = null)

{
echo "実行が非常に遅い関数:(
";
echo "現在の時刻は " . date('M-d-Y H:i:s A', time()' です。 foreach ($arr as $fruit)
{
echo "$フルーツを食べました
"; }
)
?>

例のスクリプト実行結果は以下の通りです:

実行が非常に遅い関数

現在の時刻は Jul-28-2004 17:15:57 PM です

リンゴを食べました

梨を食べました

スイカを食べました

実行が非常に遅い関数:(
現在の時刻は 2004 年 7 月 28 日 17:17:55 PM です

リンゴを食べました

梨を食べました
スイカを食べました

コードでは、Cache/Function.phpクラスを使用して関数バッファリング機能を実行しています。 $cache 変数は、ファイルベースの関数キャッシュを使用する Cache_Function オブジェクトで、$cacheDir ディレクトリに保存されます。関数呼び出しをキャッシュするには、Cache_Function オブジェクト $cache の call() メソッドを次のように使用します: $cache->call(‘slowFunction’, $arr);

ここでは、slowFunction()関数が呼び出され、パラメータは配列$arrです。この関数は$cacheDirディレクトリ内のファイルにキャッシュされます。この関数への後続の呼び出しでは、関数の実行結果が $cache->call() によって返されます。 関数のキャッシュと使用法はコンテンツのキャッシュと非常に似ているため、詳細については説明しません。詳細については、PEAR マニュアルを確認してください。

http://www.bkjia.com/PHPjc/372079.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/372079.html技術記事コンテンツ キャッシュ出力 PEAR キャッシュ 次に、この記事の焦点でもある、より一般的に使用されるキャッシュ テクノロジの調査を開始します。まず、PEAR のキャッシュ パッケージを使用します。 PEAR はコンテンツを次の場所にキャッシュできます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート