php/mysql でバナー広告エンジンを作成しています。OpenX やターンキー ソリューションは使用したくありません。既存のシステムに柔軟に対応しなければならないカスタム機能が多数あるためです。
インプレッション アーキテクチャに対する考え方と現在のアプローチは次のとおりです。
- バナー サーバーへのリクエストは、ターゲット サイトの JavaScript スニペットを介して受信されます。
- サーバーは提供するバナーのリストをキャッシュしており、必要に応じて適切な画像を返します。
- インプレッションは、apache のアクセス ログ スタイルと同様にログ ファイルに記録されます。ローテーション テキスト ファイルを使用し、インプレッションごとに 1 行を追加します。
- ログ ファイルには、ユーザーの IP、URL、バナー ID、時刻などが記録されます。
- ログ ファイルは 1 時間ごとにローテーションされ、mysql DB に (これも 1 時間ごとに) 要約されるため、広告主は活動に関する (ほぼ) リアルタイムの統計を取得できます。
私の懸念は次のとおりです。
- 「ログ」ファイルへの書き込みは、インプレッションを記録するための効率的でスケーラブルな方法ですか? 1 か月あたり 1,300 万から 1,500 万のインプレッションを配信する予定です。
- ログ書き込みアプローチの落とし穴はありますか?