Php 重定向流量百分比

Php 重定向流量百分比,php,codeigniter,redirect,ab-testing,Php,Codeigniter,Redirect,Ab Testing,我正在尝试将10%的用户重定向到我们正在测试的测试版网站。我正在使用Codeigniter框架,并已将以下内容添加到routes.php文件中: $absplit = 0.1; if((mt_rand(0, mt_getrandmax() - 1) / mt_getrandmax() < $absplit)) { header('location: '.str_replace($_SERVER[HTTP_HOST],"x.example.com","http://$_SERVER[

我正在尝试将10%的用户重定向到我们正在测试的测试版网站。我正在使用Codeigniter框架,并已将以下内容添加到routes.php文件中:

$absplit = 0.1;
if((mt_rand(0, mt_getrandmax() - 1) / mt_getrandmax() < $absplit))
{
    header('location: '.str_replace($_SERVER[HTTP_HOST],"x.example.com","http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"),true,302);
    exit;
}
$absplit=0.1;
如果((mt_rand(0,mt_getrandmax()-1)/mt_getrandmax()<$absplit))
{
标题('location:'.str_replace($\u SERVER[HTTP\u HOST],“x.example.com”,“HTTP://$\u SERVER[HTTP\u HOST]$\u SERVER[REQUEST\u URI]”),true,302);
出口
}

然而,我注意到它重定向了近40%的流量,并且似乎在大量时间内重定向(例如,10分钟内所有用户都去一个站点)。有人能发现问题吗?

创建一个带有int类型字段的表。 在主控制器索引函数中,将该值增加1。
然后检查它的值,如果大于等于10,则使用redirect()调用并将数据库值设置回0。

如果不想更改后端代码,可以编写执行重定向的JavaScript。比如说,


if(Math.random()为了更好的排列,使用秒数的时间,重定向命中1,6,12..seconds创建一个带有int类型字段的表。在主控制器索引函数中,将该值增加1。然后检查其值,如果大于等于10,则使用重定向()调用并将数据库值设置回0。如果我两次点击同一个URL,我很可能会登录到不同版本的站点。最好使用
会话
,以便某个特定用户位于两个站点中的任何一个,而不是两个。从测试角度来看,这实际上并不理想,因为它打破了随机选择的假设,从而使结果无效n组。为了进行有效的a/B测试,必须使用随机分配。