PR

[PHP] ある確率で実行する

前回、CakePHPのbakeによって得られるコードを紹介した。これは2回に1回の確率(わり切れるかどうか)で実行されていた。

pc.casey.jp » 行ごとに背景色を変える(PHP) :
https://pc.casey.jp/archives/2384

簡易的な広告(のコード)配信としても使うことはできるだろうか。調べてみたところ、参考文献にそのような使い方も可能になるようなコードが記載されていた。

スポンサードリンク

$hit[0] = 1; $rtxt[0] = '10%の確率です';
$hit[1] = 2; $rtxt[1] = '20%の確率です';
$hit[2] = 3; $rtxt[2] = '30%の確率です';
$hit[3] = 4; $rtxt[3] = '40%の確率です';
$length = count($hit) - 1;
for($i=0; $i<=$length; $i++) {
  $m += $hit[$i];
}
srand( (double)microtime()*1000000 );
$n = round( rand(1, $m) );
for($i=0; $i<=$length; $i++) {
  $x = $y;
  $y += $hit[$i];
  if($x<$n && $n<=$y) $ad = $rtxt[$i];
}
echo $ad;

※上記コードは参考文献から引用ですが、ほんの少しこちらのテスト環境に合わせて改変しています。

筆者は現在あるサイト上に置いてOpenXという広告配信サーバを構築し、そのコードをCakePHPの共通部品(element)に記載しているが、「DoubleClick for Publishers(DFP)スタンダード」という広告配信サービスがあり、Googleによって提供されている。

Googleによる広告配信といえばAdsenseが有名だ。どこが違うのだろうか調べたところ、AdsenseはGoogleがAdWordsとして集めたものを配信している。DFPを使うと、Adsenseと任意の広告を配信させることができる。つまり、OpenXのような広告代理店機能が(なんちゃってかもしれないけれど)できることになる。これによりグレーゾーンとされていたOpenXを経由しての配信から、Googleが提供する配信へ切り替えることができる。さらに、DFPにその他の広告コードを覚えさせれば面白いことができるかもしれない。

今回、確率によって実行するものを変更できるコードを探したのは、DFPやOpenXを使うほどではない場合、例えば何回かに一度任意の広告が表示できれば良い程度のものならAdsenseを使ったまま、それを実現できるかもしれないと考えたからだ。沢山の選択肢の中で、最適な解決方法を見つけることは重要だ。

※ただし、筆者は現時点で、まだDFPを使っていないので推測の域を出ない。
※PHPに限らずperl等でも同様の結果を得ることは可能だと思われる。

参考文献

コメント