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

WBOY
リリース: 2016-07-29 08:36:38
オリジナル
998 人が閲覧しました

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 です。 $key に従って、キャッシュを削除します
4. eaccelerator_gc()
期限切れのキーをすべて削除してクリーンアップします
5. eaccelerator_lock($key)
マルチプロセスおよびマルチスレッド操作中のデータ同期を確実にするために、$key にロック操作を追加します。 eaccelerator_unlock($key) を呼び出してロックを解放するか、リクエストの終了時にプログラムが自動的にロックを解放するのを待つ必要があります。
例:
eaccelerator_lock("count");
?> によると$key ロックを解放します
7. eaccelerator_cache_output($key, $eval_code, $ttl=0)
$eval_code コードの出力を $ttl 秒間キャッシュします ($ttl パラメーターは eaccelerator_put と同じです)
例:
8. eaccelerator_cache_result($key, $eval_code, $ttl=0)
実行結果をキャッシュします。 $ttl 秒の $eval_code コード ( $ttl パラメータは eaccelerator_put と同じです)、cache_output と同様です
例:

9. eaccelerator_cache_page($key, $ ttl=0)
現在のページ全体を $ttl 秒間キャッシュします。
例:
eaccelerator_cache_page($_SERVER['PHP_SELF'].'?GET='.serialize($_GET),30);
echo time();
?&g t ;
10. eaccelerator_rm_page($key)
eaccelerator_cache_page() によって実行されるキャッシュを削除します。パラメータも $key です
___________________________________________________________
(その能力を確認するための簡単な例ですが、cli モードでは有効ではないことに注意してください!)
class test_cache {
var $pro = 'hello';
function test_cache() {
echo "オブジェクトが作成されました!
n"
}
function func() {
echo '、世界!';
}
関数 now($t) {
echo date('Y-m-d H:i:s', $t)
}
}
$tt = eaccelerator_get("test_tt"); tt)
{
$tt = new test_cache;
eaccelerator_put("test_tt", $tt);
echo "キャッシュされていません!
n"
}
else {
echo "cached
n";
}
echo $tt->pro;
$tt->now(time() + 86400);
以下はネチズンからのコメントです。 ------ -------------------------------------------- ------ ------------------------
showsa 返信日:2005-12-31 19:51:56winでも対応しています! http://www.arnot.info/eaccelerator/
Albatross の返信日: 2006-01-04 17:17:37 eAccelerator 0.9.4-rc1 の最新バージョンには小さなバグがあり、/var/ として表示されます。 log/httpd/error_log 大量の [warn] (32) Broken Pipe: write Pipe_of_death エラー メッセージが表示される 解決策: debug.c ファイルを変更します。 --------- --------- /**  * デバッグ システムを閉じます。  */ void ea_debug_shutdown () { fflush (F_fp); // ソースステートメント、ファイルを閉じるときにファイル ハンドルが検出されない //fclose (F_fp); // if (F_fp != stderr) fclose (F_fp) } に変更します。 :01:21eAccelerator/truck-mmcache は怖すぎます。現在、Drupal ベースと PostNuke ベースの 2 つの高負荷システムを使用しています。eAccelerator を使用した後、Drual の速度は 100 倍、PostNuke の速度は 10 倍になりました。 PostNuke の改善が遅い理由は、非常に高速であるためです。 Squid を使用するのとどう違うのですか? Squid はキャッシュされたページです。実行結果がリアルタイムに表示されない場合は、Squid の方が確実に優れています。ただし、フォーラムなどでは、Squid は機能しません。大幅に効率が向上します
Yarco さんの返信先: 2006-04-09 10:00:43 しかし、エンコードされたコードと競合があると言われています... zend との互換性はどの程度あるのでしょうか?
上記では、translateaccelerator の内容を含め、eAccelerator を使用して PHP コードを高速化する目的を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート