サイトで広告をローテーションしようとしていますが、次のことを考慮した式を考え出そうとしています:
- タイムスタンプ (最近作成された広告ほど優先度が高くなります)
- インプレッション数 (ビュー数が少ない広告の優先度を高くする必要があります)。理想的には、すべての広告の 1 か月あたりのインプレッション数に割り当てを設定したいと考えています。
- ウエイト (ウエイトの高い広告は優先度を高くする必要があります)
そして最後に、結果をランダム化する方法について説明したいと思います。これらの要因を PHP スクリプトまたは mysql クエリに適応させる最善の方法は何でしょうか? これまでのところ、次のようなクエリを試しました。
$result = mysql_query ("SELECT * FROM banner_ads WHERE usedImpressions/totalImpressions < $threshold OR usedImpressions = 0 ORDER BY RAND() LIMIT 1");
ただし、もちろん、ここでの大きな制限は、しきい値の適切な値であるべきであり、それが作成されたときの重みまたはタイムスタンプをまだ考慮していません。