PHPプログラムに関する各種メモ書き:タグ「高速化」での検索

phpの実行時間を計測する

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;
}
No.859
10/18 11:08

edit

高速化

Smartyキャッシュを削除する

Smartyキャッシュを削除するには clear_cache(); を使用します。

void clear_cache(string template,
                 string cache_id,
                 string compile_id,
                 int expire_time);

Smartyを使用したサイトではSmartyキャッシュを使用することにより劇的に高速化されますが、(テストページや一時的に表示したページの)キャッシュファイルをクリアし忘れると、逆にハードディスクに負荷をかけて動作を遅くするおそれがあります。

古い不要キャッシュの削除は必ず行いましょう。

Smarty Cache時間による自動削除の例

// 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

No.761
08/23 10:43

edit

Smarty
ファイル
高速化

PEAR Cache_Lite を使ってみる

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
がおすすめです

No.334
12/23 17:01

edit

高速化
PEAR