PHPのAPCコードを予め前もって作成したり削除するPHP関数「apc_compile_file/apc_delete_file」
2010年12月22日-
スポンサード リンク
apc_compile_file - ファイルをバイトコードキャッシュに保存し、すべてのフィルタをバイパスする
apc_delete_file - ファイルを opcode キャッシュから削除する
PHPのAPCコードを予め前もって作成したり削除するPHP関数「apc_compile_file/apc_delete_file」。
APCとはPHPのコードを毎回パースしないでもよいように、PHPソースをOpcode形式に変換して共有メモリ等にキャッシュして次回からパースしないようにすることで速度を速める仕組みです。
基本的にAPCがenabledになっている場合は、ユーザからのアクセスをトリガにして、APCのOpcodeを作ります。
この場合、最初の1回目が遅くなるという現象が出ますが、apc_compile_file 関数で次のようにファイルを指定してあげればOpcodeをキャッシュしてくれます。
<?php
$files = array(
'/path/to/index.php',
'/path/to/common/header.php',
'/path/to/common/footer.php',
.... キャッシュしたいコードを羅列
);
foreach ($files as $file) {
apc_compile_file($file);
}
?>
アクセスが多くて、PHPのソースコードも大量にあるサイトなんかの場合は、サービス投入前に上記のコードを動かしておけば1回目が遅いという現象は避けられます。
find コマンドでPHPのソース一覧を作ってループさせるとよさそうですね。facebookでは昔やってたみたい。
(cli の場合は動かない場合があるので設定を見直しましょう)
キャッシュ結果は、apc.php の管理画面で確認できると思います。
逆に、キャッシュされたOpcodeを削除したい場合は、APCの3.1.1というバージョンから追加されたapc_delete_fileを呼び出せば削除できます。
apc.stat=0等にしてファイルの変更を無視する設定であってもこの関数を呼び出すことで特定のファイルのキャッシュのみを削除することができ、部分的に最新への反映が可能みたいです。
以前は、キャッシュしたコードは、apc_clear_cache で全部のキャッシュをクリアする方法しかなかった気がしますが便利になったようです。
殆どのケースにおいて、ユーザからのアクセスをトリガにキャッシュする方式で問題ないように感じますが、テクニックとして覚えておいても損はなさそう、ということで公開してみました。
関連エントリ
apc_delete_file - ファイルを opcode キャッシュから削除する
PHPのAPCコードを予め前もって作成したり削除するPHP関数「apc_compile_file/apc_delete_file」。
APCとはPHPのコードを毎回パースしないでもよいように、PHPソースをOpcode形式に変換して共有メモリ等にキャッシュして次回からパースしないようにすることで速度を速める仕組みです。
基本的にAPCがenabledになっている場合は、ユーザからのアクセスをトリガにして、APCのOpcodeを作ります。
この場合、最初の1回目が遅くなるという現象が出ますが、apc_compile_file 関数で次のようにファイルを指定してあげればOpcodeをキャッシュしてくれます。
<?php
$files = array(
'/path/to/index.php',
'/path/to/common/header.php',
'/path/to/common/footer.php',
.... キャッシュしたいコードを羅列
);
foreach ($files as $file) {
apc_compile_file($file);
}
?>
アクセスが多くて、PHPのソースコードも大量にあるサイトなんかの場合は、サービス投入前に上記のコードを動かしておけば1回目が遅いという現象は避けられます。
find コマンドでPHPのソース一覧を作ってループさせるとよさそうですね。facebookでは昔やってたみたい。
(cli の場合は動かない場合があるので設定を見直しましょう)
キャッシュ結果は、apc.php の管理画面で確認できると思います。
逆に、キャッシュされたOpcodeを削除したい場合は、APCの3.1.1というバージョンから追加されたapc_delete_fileを呼び出せば削除できます。
apc.stat=0等にしてファイルの変更を無視する設定であってもこの関数を呼び出すことで特定のファイルのキャッシュのみを削除することができ、部分的に最新への反映が可能みたいです。
以前は、キャッシュしたコードは、apc_clear_cache で全部のキャッシュをクリアする方法しかなかった気がしますが便利になったようです。
殆どのケースにおいて、ユーザからのアクセスをトリガにキャッシュする方式で問題ないように感じますが、テクニックとして覚えておいても損はなさそう、ということで公開してみました。
関連エントリ
スポンサード リンク
Advertisements
SITE PROFILE
最新のブログ記事(新着順)
- 小説表紙などに使えそうな商用可なフォント「になロマン」
- 筆で書いたようなカナ書体「筆竹仮名B」
- 無料・商用利用可な丸文字ピクセルフォント「マルミーニャM」
- スペースコブラ風フォント
- Next.jsのVercelから商用利用可能なフリー汎用フォント「Geist Font 」
- 無料で使えるいい感じの日本語フォント「しっぽり太ゴシック」
- CSSのみで実装された500種類のローディングアニメーション「CSS Loaders」
- 画像ホバーで様々なエフェクトをかけられる「Izmir」
- CSSのbox-shadowをGUIで生成できる「CSS Box Shadows Generator」
- 好きな画像や文字を埋め込んだQRコードをリアルタイムで作れるWEBツール
- 過去のエントリ