[PHP-users 17886]Re: 多重include(once)について
Yasuo Ohgaki
yohgaki @ ohgaki.net
2003年 9月 16日 (火) 13:02:40 JST
大垣です。
# ほとんどのサイトではここまでする必要は無いと思いますが、
# おまけにもう一つ。
最近気に入っているパフォーマンスチューニングの手法の一つは
エセWebサービス+Reverse Proxyです。
Pesudoコードはこんな感じです。
エセWebサービスホスト
http://example.com/ese_php_web_service.php
<?php
send_http_expire_header(); // Send HTTP cache header
sanitize_user_input(); // Check inputs, clients, etc
echo "<?php\n";
echo "$ese_web_service = \n"
echo var_export(get_data()); // Get data needed and export
echo "?>\n";
?>
エセWebサービスクライアント
<?php
require("http://example.com/ese_php_web_service.php?id=1234&type=3456");
// use the data
// For example - echo $ese_web_service['name'];
?>
エセWebサービスホストに直接アクセスするのではなくキャッシュサーバ
にアクセスする事がパフォーマンス向上には重要です。参照系のDBアクセ
スにはかなりの効果(数十倍以上のパフォーマンス)が期待できます。
# 同様の手法で別の言語でもパフォーマンスチューニング可能です。
# データへのアクセスが抽象化されているコードなら、比較的簡単に
# 利用できます。サーバ構成などに自由度が高く、かなりのパフォー
# マンスが参照系ページに必要な大規模サイトなどでにお薦めできる
# と思います。
# キャッシュサーバ使用する方法の良いところは、キャッシュサーバ
# を増やすことによって参照系Webページのパフォーマンスを簡単かつ
# リニアにパフォーマンス向上ができる点です。キャッシュサーバの
# 配置などで簡単に色々チューニングもできます。
# SOAPとかは?と言う意見もあると思いますが、内部でのみ使うデータ
# にはSOAP(XML)は無用の長物、パフォーマンス重視、という場合が
# 対象です。
# 他にはDBに保存されたルックアップテーブルの高速化にも使えます
# が、先のメールに書いたように、更新頻度によってはファイルベース
# のDBをローカルファイルシステムから参照する方が良い場合も多い
# と思います。(特にネットワークトラフィックが問題となる場合)
# rsyncを使えばDBを複数のWebサーバに簡単に配布できるのでこの方
# 法もお薦めです。
# 当然ですが、トランザクションで使うデータや更新が頻繁なデータ等
# には使えません。また、ページ全体をキャッシュ出来る場合はあまり
# 意味がありません。念のため。
# どんな手法にも長所短所があるので、良く考えてから使ってください。
--
Yasuo Ohgaki
PHP-users メーリングリストの案内