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
最新のブログ記事(新着順)
- 個性的な明朝フリーフォント「築豊初号明朝OFL」
- CSSで太陽が差し込むようなアニメーション実装
- 可愛くアニメーションする「beautifully crafted animated icons」
- アイソメトリックなアイコンがアイコンがPNG,SVGでゲットできる「Isoicons」
- ユニークなカタカナフォントtorisippo
- 美しいメッシュグラデーションをCSSで簡単に取得できる「MSHR」
- TailwindCSSなサイトで使える100以上のアニメーションエフェクト「animata」
- SVG形式のテック系企業のロゴを簡単にゲットできる「Svgl」
- 統一感のある色味を一括生成できるツール「The good colors」
- くちばしフォント【商用可】
- 過去のエントリ