PHPの実行時間を計測するには下記ような方法で計測します。
$start_time = microtime(true);
// ここに計測したい処理を記述
$end_time = microtime(true);
$processing_time = $end_time - $start_time;
echo "開始時間: ".format_microtime($start_time,'Y-m-d H:i:s')."<br>\n";
echo "終了時間: ".format_microtime($end_time,'Y-m-d H:i:s')."<br>\n";
echo "処理時間:".format_microtime($processing_time)."秒<br>\n";
function format_microtime ( $time, $format = null )
{
if (is_string($format)) {
$sec = (int)$time;
$msec = (int)(($time - $sec) * 100000);
$formated = date($format, $sec). '.'. $msec;
} else {
$formated = sprintf('%0.5f', $time);
}
return $formated;
}
Smartyキャッシュを削除するには clear_cache(); を使用します。
void clear_cache(string template, string cache_id, string compile_id, int expire_time);
Smartyを使用したサイトではSmartyキャッシュを使用することにより劇的に高速化されますが、(テストページや一時的に表示したページの)キャッシュファイルをクリアし忘れると、逆にハードディスクに負荷をかけて動作を遅くするおそれがあります。
古い不要キャッシュの削除は必ず行いましょう。
// 7日以上古いキャッシュを削除する $days = 7; $time = $days * 24 * 60 * 60; // 10回に1回実行 if( rand(1,10)==1 ){ $smarty->clear_all_cache($time); }
ファイルを使用せずキャッシュにMySQLを使用する
http://www.smarty.net/docsv2/ja/section.template.cache.handler.func.tpl
Cacheクラス PEAR Cache_Lite を使ってみる。
インストールはコマンド一発。簡単。
pear install Cache_Lite
composerコマンドでも入れられます
composer require pear/cache_lite
レンタルサーバの場合は http://pear.php.net/package/Cache_Lite/download からダウンロード
ソースは下記のような感じ
// クラス読み込み
require_once('Cache/Lite.php');
// IDのセット
$cache_id = '123456';
// オプション
$options = array(
'cacheDir' => '/tmp/',
'caching' => 'true', // キャッシュを有効に
'automaticSerialization' => 'true', // 配列を保存可能に
'lifeTime' => 1800, // 60*30(生存時間:30分)
'automaticCleaningFactor' => 200, // 自動で古いファイルを削除(1/200の確率で実行)
'hashedDirectoryLevel' => 1, // ディレクトリ階層の深さ(高速になる)
);
// オブジェクトのnew
$cache=new Cache_Lite($options);
// キャッシュデータがあるかどうかの判別
if( $cache_data=$cache->get($cache_id) ){
$buff = $cache_data;
}
else{
// キャッシュデータがない。DBからデータを読み込む処理
// データ取得処理ここから
// ……………………… $read_data にデータを入れておく
// データ取得処理ここまで
$buff = $read_data;
$cache->save($buff, $cache_id);
}
print_r($buff);
簡単、便利。 古くなったキャッシュファイルも自動で削除してくれるので余計なコーディングをしなくてすみます。
オプションについてのマニュアル:http://pear.plus-server.net/package.caching.cache-lite.cache-lite.cache-lite.html
マニュアル:http://pear.php.net/manual/en/package.caching.cache-lite.php
他のおすすめキャッシュクラスとしては
phpfastcache : https://packagist.org/packages/phpfastcache/phpfastcache
がおすすめです