0

对于我创建的所有链接,我需要一个加权旋转器,以便流量可以按加权比例分配到我定义的目的地。我目前使用以下内容:

<?

header('Location: www.destinationwebsite1.com/index.php');

?>

但是,这只会将流量分配到 1 个来源。我想要一些基于“权重”分配到我定义的许多目的地的东西。

如:

25% to www.destinationwebsite1.com/index.php 
25% to www.destinationwebsite2.com/index.php 
25% to www.destinationwebsite3.com/index.php 
25% to www.destinationwebsite4.com/index.php 

或我选择的任何百分比。有人有想法么?

最佳-N

4

2 回答 2

1

使用random编号并根据它将您的结果发送到不同的地方。

// equal weights:
$sites = Array(
     "http://www.example.com/",
     "http://google.com/",
     "http://youtube.com/"
);
header("Location: ".$sites[rand(0,count($sites)-1)]);

// individual weights:
$sites = Array(
     "http://www.example.com/" => 50,
     "http://google.com/" => 30,
     "http://youtube.com/" => 20
);
$rand = rand(0,array_sum($sites)-1);
foreach($sites as $site=>$weight) {
    $rand -= $weight;
    if( $rand < 0) break;
}
header("Location: ".$site);
于 2012-09-02T21:29:09.157 回答
0

像这样的东西?

<?php
$r = rand() / getrandmax();

if ( $r < 0.25 )
{
    header( 'Location: www.destinationwebsite1.com/index.php' );
}
elseif ( $r < 0.50 )
{
    header( 'Location: www.destinationwebsite2.com/index.php' );
}
elseif ( $r < 0.75 )
{
    header( 'Location: www.destinationwebsite3.com/index.php' );
}
else
{
    header( 'Location: www.destinationwebsite4.com/index.php' );
}

?>

从统计上讲,这应该将 25% 的访问者发送到每个站点。要更改发送到每个站点的访问者的比例,只需更改权重数字即可。

于 2012-09-02T21:28:53.563 回答