2011-07-21 8 views
2

できるだけ早くリダイレ​​クトしたい。だから、私はhtaccess redirectを使うことにしました。これは、PHPインタープリタが初期化される前でも応答するからです。しかし、私はリダイレクトを記録し、何かをデータベースに書きたいと思っています。Htaccess:PHPをトリガーするか、ログに書き込む

私はリダイレクトして、PHPファイルをトリガーするためにリライトマップを呼び出そうとしましたが、500エラーだけがスローされます。

ログ処理が遅れてもログファイルを作成できればいいです。重要なのは、高速リダイレクト、リダイレクトの追跡/ログ記録のみです。

これに関するアイデアや推奨事項はありますか? PHPを呼び出すことなく、アパッチによって行われることになる -

は先行

にあなたがファイルにアクションを書き換えログインにRewriteLogを使用することができ、すべての最高の、

エムレ

答えて

2

をお願いします。

=>非常に高速です。データベースではなくファイルにのみログを記録します。それでも、あなたが言ったように、ログ処理は遅らせられ、crontabから実行されるスクリプトによって実行されます。


RewriteLogLevelも参照して、ログをどの程度冗長にするかを設定してください。あなたは、Tは次のようにmysqlのモジュールにApacheのログを試してみたい場合があります

1

(あなたがそこにそれを置くことができればそう、Apacheをリロードすることを忘れないでください)のapache /バーチャルホストの設定ではなく、.htaccessファイルで使用することができます:

RewriteEngine On 
    RewriteRule /foo http://www.example.com [R=301,E=redirected] 

    CustomLog /path/to/log combined env=redirected 

'組み合わせ' ですdefine your own

+0

+1これは最適な解決策です。私は環境変数のapacheログが好きですが、ルールが適用されたときにのみログに記録されます。そして確かに最も速いもの。 .htaccessファイルの使用を取り除くと、Apacheの速度が速くなり、AllowOverride Noneを使用して、高速のリダイレクトが必要になります.htaccessを削除して規則的なApacheファイルでルールを使用すると、ディレクトリ単位の設定ファイルに対して実行時のIOが多くなります。 – regilero

1

できるだけ高速でログを記録することが重要な場合は、ディスクI/Oを最小限に抑えることが重要なポイントです。 .htaccessに依存すると、URLの各レベルでディレクトリスキャンが行われます(http://muffinresearch.co.uk/archives/2008/04/07/avoiding-the-use-of-htaccess-for-performance /)。

ApacheのconfにRewriteRuleを設定してリダイレクトをPHPファイルにすると、PHPでw/APCが実行され、memcacheオブジェクトに対してログが実行される可能性があります。そうすれば、クライアント全体のアクセスは純粋に高速アクセスメモリで行うことができます。また、定期的にmemcacheからデータを取得してデータベースにプッシュするcron-jobを使用することもできます(この方法では、クライアントのアクセスではディスクを読み取る必要はありません)。

明らかに、データベースに柔軟性がある場合は、格納せずにmemcacheに書き込むスピードを持つことができるCouchbaseスタイルのソリューションを使用できます揮発性メモリの情報ですが、現在使用しているデータベースにロックされていると思います。

関連する問題