h19e_logo.png

プログラミングメモと、子供とのお出かけ記録
<< PHP Cookieを使用したログイン管理 | main | PHP CodeIgniter + Twig + PDO >>
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | - | pookmark |
PHP 特別なライブラリなしで簡単に使える簡易キャッシュ
WEBサービスを作る際によく問題になってくるのは負荷の問題かと思います。
現在では、その問題の解決策の一つとしてキャッシュを使う方法は当然の様になってきました。

ちゃんとしたアプリケーションを作る時はmemcache等を使うのが今のところ一番良いかとは思っているんですが、個人でサービスとか作ってる場合簡単に使えなかったりするので、ページの中でこの部分だけどうしても重くてなんとかしたいって時に使える方法を紹介します。

index.php  アクセスされるファイル
-------------------------------------------------------------
<html>
<body>
<p>Hello World</p>
<?php
//重い処理が記述されたページの一部を表示する部分
include '../app/component.php';
?>
</body>
</html>
---------------------------------------------------------------

../app/component.php  重い処理が記述されたページの一部を表示する部分
----------------------------------------------------------------

<?php
$currentTime = time();
?>
<p>Component</p>
<p>time is <?php echo $curentTime; ?></p>
---------------------------------------------------------------
サンプルなので、時間を表示しているだけの全然重くない処理ですが、実際はここでデータベースから値を取得してランキングを表示したり、APIから検索結果を取得したりすることを想定してください。

上記のソースを以下の様にindex.phpを変更することで、簡単にキャッシュを使用することが出来ます。

index.php
---------------------------------------------------------------
<html>
<body>
<?php
//簡易キャッシュ用のファイルパス (ここは書き込み権限があるファイルパスを適当に記述)
$cacheFile = '/tmp/sample_component.txt';
//キャッシュ時間 (このサンプルでは60秒)
$cacheTime = 60;

$time = filemtime($cacheFile);

//ファイルが存在していて、さらに更新されてから60秒たっていなかったらキャッシュファイルをそのまま表示
if (file_exists($cacheFile) && ($time + $cacheTime) > time() ) {
    include $cacheFile;
} else {

    //この処理で、$bodyのなかに、表示用のHTMLソースが格納される。
    ob_start();
    include "../app/component.php";
    $body = ob_get_contents();
    ob_clean();

    //表示用のHTMLソースをファイルに書き込む
    $file = new SplFileObject($cacheFile,'w');
    $file->fwrite($body);
   
    //HTMLソースを出力
    echo $body;

}
?>
</body>
</html>
--------------------------------------------------------------------

仕組み自体は単純なので、もし格安レンタルサーバとか借りてて負荷の問題が出てきた時には使ってみてください。


関連エントリー PHP ファイルキャッシュクラス サンプル - 2012/08/06 更新

| プログラミングメモ | 10:26 | comments(0) | trackbacks(0) | pookmark |
スポンサーサイト
| - | 10:26 | - | - | pookmark |

コメント
コメントする









この記事のトラックバックURL
http://h19e.jugem.jp/trackback/34
トラックバック