ホームページ >php教程 >php手册 >eAccelerator を使用して PHP コードを高速化する目的

eAccelerator を使用して PHP コードを高速化する目的

WBOY
WBOYオリジナル
2016-06-13 12:33:16759ブラウズ

eAccelerator を使用して PHP コードを高速化します
eAccelerator は非常に優れた機能です (その前身は track-mmcache)。
簡単に言うと、PHP (PHP5 をサポート) で動作し、共有メモリまたはディスク ファイルを介してデータを交換するキャッシュ システムです。
PHP ソース コードを「エンコード」し (不適切に「暗号化」と呼ばれます)、PHP 実行の中間コードをキャッシュして高速化するために広く使用されています。 eA のインストールと使用方法については、詳細な記事が多数あります。今回お勧めしたいのは、次のような一連の API を提供する eA です。便利で安定したネイティブ マシンのキャッシュ実装方法ですが、現在設計のこの部分は共有メモリのみをサポートしているようです。そのため、Unix ライク OS でのみ使用でき、Windows はそれほど幸運ではありません。
1. eaccelerator_put($key, $value, $ttl=0)
$key をキー名として $value をキャッシュに保存します (オブジェクトタイプは php4 でサポートされていますが、ソースコードを見ると、 zend2 ではサポートされていないようです)、 $ttl はこのキャッシュのライフサイクルで、単位は秒です。このパラメータを省略するか、0 として指定すると、サーバーが再起動してクリアされるまで、時間制限がないことを意味します。
2. eaccelerator_get($key)
$key に基づいて、キャッシュから対応する eaccelerator_put() に格納されたデータを返します。キャッシュが期限切れである場合、またはキャッシュが存在しない場合、戻り値は NULL です。 . eaccelerator_rm ($key)
$key に基づいてキャッシュを削除します
4. eaccelerator_gc()
期限切れのキーをすべて削除してクリーンアップします
5. $key ロックを追加しますマルチプロセスおよびマルチスレッド操作中にデータの同期を確保するための操作。 eaccelerator_unlock($key) を呼び出してロックを解放するか、リクエストの終了時にプログラムが自動的にロックを解放するのを待つ必要があります。
例:
eaccelerator_lock("count")
eaccelerator_put("count",eaccelerator_get("count") 1)); > 6. eaccelerator_unlock($key)
$key に基づいてロックを解放します
7. eaccelerator_cache_output($key, $eval_code, $ttl=0)
$ttl の $eval_code コードの出力をキャッシュします秒、($ttl パラメータは eaccelerator_put と同じです)
例:
🎜>8. eaccelerator_cache_result($key , $eval_code, $ttl=0)
cache_output
と同様に、$eval_code コードの実行結果を $ttl 秒間キャッシュします ($ttl パラメーターは eaccelerator_put と同じです)。例:
9. eaccelerator_cache_page($key, $ttl=0); > 現在のページ全体を $ttl 秒間キャッシュします。
例:
eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30);
echo time(); 🎜> phpinfo();
?>
10. eaccelerator_rm_page($key)
eaccelerator_cache_page() によって実行されるキャッシュを削除します。パラメータも $key
_____________________________________________
簡単な例 その能力をチェックしてください。cli モードでは動作しない可能性があることに注意してください。)
class test_cache {
var $pro = 'hello';
function test_cache() {
echo "オブジェクトが作成されました!
n";
}
function func() {
echo '、世界!';
function now($t ) {
echo date('Y-m-d H:i:s', $t);
}
}
$tt = eaccelerator_get("test_tt"); )
{
$tt = new test_cache;
eaccelerator_put("test_tt", $tt);
echo "キャッシュされていません!
}
else {
echo "キャッシュ済み
n";
echo $tt->pro
$tt->func(); time() 86400);
?>
以下はネチズンからのコメントです:
---------------------- ----- -------------------------------------- ----- -
showsa 回答日: 2005-12-31 19:51:56 winも対応しています! http://www.arnot.info/eaccelerator/
Albatross の返信日: 2006-01-04 17:17:37 eAccelerator 0.9.4-rc1 の最新バージョンには小さなバグがあり、/ として表示されます。 var/log/httpd 大量の [warn] (32) Broken Pipe: write Pipe_of_death エラー メッセージが /error_log に表示されます。 解決策: debug.c ファイルを変更します。 ----------- ------------ /**  * デバッグ システムを閉じます。  */ void ea_debug_shutdown () { fflush (F_fp) ); // ソースステートメント、ファイルを閉じるときに検出されません ファイルハンドル //fclose (F_fp) // if (F_fp != stderr) fclose (F_fp); }
soicular は次のように応答しました。 2006-01-10 22:01:21eAccelerator/truck- mmcache はひどいです。現在、Drupal ベースのシステムと PostNuke ベースのシステムの 2 つを使用しています。eAccelerator を使用すると、Drual の速度が 100 倍向上しました。 PostNuke が 10 倍向上したのは、PostNuke 自体がすぐに返信したためです。
は Squid を使用した場合と比較します。 2006-04-08 23:23:44 Squid との違いは、Squid がページの実行結果をキャッシュすることです。ただし、フォーラムなどでは Squid の方が優れています。 eaccelerator /memcache を使用すると効率が大幅に向上します
Yarco の回答日時: 2006- 04-09 10:00:43 しかし、エンコードされたコードと競合すると言われています...どの程度互換性があるかはわかりません今はzendと一緒ですか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。