advocacy1 ajax1 algorithm2 axial3 configuration1 front controller1 general1 php15 pligg1 review1 TDD1 Unit Testing1 url routing3 Weekly Review7 yaml1
平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 本件に関するお問い合わせはこちらよりお願いいたします。
今回は、apache module について気になることがあったので紹介します。 先日 バージョンアップするために apache module を更新した直後 apache が Segmentation fault してしまうという問題に気が付きました。 Segmentation fault した後に apache を再起動すれば、新しいモジュールが反映されて正常に動作するものの何故この様なことが起こるのか不思議に思い原因を調査してみました。 % curl http://localhost/ curl: (52) Empty reply from server レスポンスが空です。apache のログには [Thr Mar 29 17:52:01 2007] [notice] child pid 20001 exit signal Segmentation fault (11) この様なエ
symfonyのURIはrouting.ymlで自由に設定できるのがウリです。 たとえば、 http://domain/blogという呼び出しは default_index: url: /:module param: { action: index }というルールが適用されblogモジュールのindexアクションが呼び出されます。 ただし、このままの設定では http://domain/blog/と最後にスラッシュが付いた場合はNot Foundになってしまいます。 もちろん、ルーティングのルールを追加すればいいのですが、このためだけにルールを追加するのはちょっと気が向きません。 というわけで、直接リダイレクトの設定をいじってしまう方法がフォーラムにあったのでそれを使ってます。 webディレクトリの.htaccessの最初のルールとして次のルールを追加します。 RewriteRule ^(
Posted by: Hirotaka Ogawa @ February 12, 2007 03:45 AM | かなり前からApache 2.2.xを使っているのですが、mod_cache/mod_disk_cacheなんていうモジュールが存在することに全然気がついていませんでした。このモジュールはサーバサイドでコンテンツキャッシングを実現するもので、CGIなどを使って生成される動的なコンテンツのレンダリング結果の再利用を可能にします(静的なコンテンツもキャッシュできますが、応答時間が問題になることはありませんし、一般的にはクライアントサイドでキャッシングされます)。キャッシュするコンテンツは時間制約の強くないものである必要があります。例えば、コメンティングシステムなどではユーザが行った操作をコンテンツに即座に反映する必要があるために適していませんが、検索システムやCMSのように対象とな
Posted by: Hirotaka Ogawa @ February 16, 2007 05:42 PM | 前のエントリーで書いた方法だとブラウザによってはページをリロードするたびに待たされることになります。 mt-search.cgiをmod_cacheで超高速化する!! - Ogawa::Memoranda なんでかな?と思ったので、動的コンテンツ(この場合はURLにクエリ文字列を含む動的コンテンツ)へのリクエストに対する、(mod_cacheで実現された)サーバーサイドキャッシュの振る舞いをもう少し深追いしてみました。 サーバーサイドキャッシュがない場合 サーバーサイドキャッシュがない場合には、すべての動的コンテンツへのリクエストごとにレンダリングを行い、そのデータがレスポンスとして返されます。 動的コンテンツで、Last-Modified, ETagヘッダを含むレスポンスを行
先日(id:stanaka:20070204)、公開したmod_dosdetectorですが、ブクマ数が300users越えと予想以上の反響でした。その中で、いくつかFAQ的な反応があったので、それらに対する回答です。 mod_limitipconnでもできるんじゃないの? mod_limitipconnは、同時接続数を制限して、越えた場合は、接続拒否をするというモジュールです。mod_dosdetectorは、DoS判定したクライアントのみを対象とした制御が可能です。この手の定量的なアクセス制御モジュールは、これまでにいくつか開発されているのですが、ほとんどのモジュールが単純にアクセス拒否するだけ、というのも、mod_dosdetectorの開発動機の一つです。 パフォーマンスは? 確かに余分な処理が必要となっているため、CPU負荷は増えています。しかし、はてなのサーバ構成では、リバース
PHPとMySQL はじめに、PHP(Personal Home Page tool)について簡単に紹介します(注)。ご存じのように、PHPはWebアプリケーションの定番として定着しています。また、Strutsのような大規模開発向けフレームワークがもてはやされる一方で、PHPをはじめPerlやRuby、Pythonといったスクリプト系言語に代表される「Lightweight Language」が手軽さと機能の豊富さから近年再注目されています。特にDBやWebとの相性がいいPHPは、初歩的なWebアプリケーションから本格的な用途まで幅広く利用されています。 PHP 4.1まではおおむね順調にリリースされていたのですが、PHP 4.2で「register_globals問題」が大きく取りざたされました(コラム1)。ちなみに、快速MySQLでデータベースアプリ!の第5、6回で紹介しているPHPサ
ウェブサービスでは、アクセスが集中して、サイトが落ちる、というのは、よくある話です。純粋に人気が出てアクセス集中するなら、サーバ管理側の責任と言われても、しかたないと思います。しかし、botやF5アタックによる突発的な集中アクセスで、落ちてしまう、というのは、運営側としても、あまり納得がいくものではありません。 そのような突発的なアクセスに対応するために、大量のアクセスをしてくるクライアントを検出し、優先度を落すか、アクセス禁止にする方法などがあります。 というわけで、Apacheモジュールでそれを検出するためのmod_dosdetectorを開発しました。(ちなみにコア部分の開発期間は、Apacheモジュールって、どう書くんだっけ、という状態から、3日でした。) mod_dosdetectorは、Apacheモジュールとして動作し、クライアントのIPアドレスごとにアクセス頻度を測定し、設
こんにちは satoです Aapcheでproxyサーバを利用している場合、頻繁にアクセスされて、なおかつ 更新の少ないデータ、(フォト蔵や mixiでいう マイピクチャーなど) は proxyサーバにキャッシュするとレスポンスが良くなります。 mod_proxy_balancerと mod_disk_cache を利用して、proxyサーバに データをキャッシュする手順を紹介します <VirtualHost * *:443> ServerName example.com ProxyPass /img ! # cssやイメージファイルは proxyしないでローカル参照 ProxyPass /css ! <Proxy balancer://web> AddOutputFilterByType DEFLATE text/html text/css application/x-j
ちょっと調べてみたら、書き換えるためのディレクティブが用意されてました。同様にProxyPassReverseCookieDomainディレクティブもあります。 ProxyPassReverseCookiePath ディレクティブ 使用法は基本的に ProxyPassReverse と同じですが、ヘッダの URL の代わりに Set-Cookie ヘッダの path 文字列を書き換えます。 たとえば、 フロント:Apache2.2(mod_proxy+mod_proxy_http+mod_proxy_balancer) バックエンド:Apache2.2(PHP) のような構成でバランシングしている場合で、バランシングの設定が LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/m
あまり知られていません(と思われる)がApache2(2.0.41以降)にはアクセスログの書き出しをメモリにバッファリングし高速化させるという機能があります。 今回はその機能を有効にするとどれぐらい速くなるのか調べてみました。 設定方法はhttpd.confに BufferedLogs On と追加するだけでログのバッファリングが有効になります。 以下ベンチマークを取った結果です。 バッファリング無効984 Request/Sec バッファリング有効1033 Request/Sec (参考)ロギング無し1055 Request/Sec ※小さなhtmlファイルに対してab -c 100 -n 1000を何度か繰り返した結果の平均です。 体感では違いを感じられないとは思いますがベンチを取るとおよそ5%程Request per secondの値が上がっていました。 静的なファイルが
Apache2.2.3の環境下で mod_proxy_balancer と mod_disk_cache を使い、キャッシュサーバを構築したのでメモしておきます。 イメージする構成としては、まずフロントエンドにApacheのReverse Proxy Serverがあり、そしてその裏側に実際にアクセスする複数台のWeb Server(以下の例では5台)があります。 クライアントからのアクセスを受けると、リバースプロキシは、負荷分散アルゴリズムにしたがって、実際のウェブサーバへリクエストを投げることになります。その際、画像コンテンツのみをキャッシュし、次回以降のアクセスではキャッシュファイルのみを返すようにします。 ということで早速設定してみます。 mod_proxy_balancerモジュールを有効にするためには、mod_proxyおよびmod_proxy_httpモジュールが有効になって
CGI 等で生成される動的コンテンツには,個別のリクエストごとに異なるレスポンスを 返さなければならないものもあれば,ある程度の時間内であればどのリクエストに 対しても同じレスポンスを返すものもあるでしょう.後者であれば,レスポンスを mod_mem_cache でキャッシュすることにより毎回 CGI 等を実行せずに済むので, かなり効果的にサーバの負荷軽減を実現することができます. # mod_mem_cache は Apache 2.0 ではまだ "experimental" という扱いですが, Apache 2.1 / 2.2 ではかなり改良されています. httpd.conf での設定は,例えば以下のような感じで.動的コンテンツでは Content-Length ヘッダを出力しないことが多いですから,MCacheMaxObjectSize の指定に際しては併せて MCacheMax
リダイレクト Fromにサイトパスを入力、ToにURLを入力 301 Moved Permanently 恒久的に移動 From: To: From: To: From: To: 302 Moved Temporarily 一時的に移動 From: To: From: To: From: To:
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く