Перенаправление процента трафика

Я пытаюсь перенаправить 10% моих пользователей на бета-сайт, который мы тестируем. Я использую платформу Codeigniter, и я добавил следующее в файл rout.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;
}

Тем не менее, я замечаю, что он перенаправляет почти 40% трафика и, кажется, перенаправляет в промежутках времени (например, все пользователи в течение 10 минут переходят на один сайт). Кто-нибудь может определить проблему?

1

Решение

Создайте таблицу с одним полем типа int.
В индексной функции основных контроллеров увеличьте это значение на 1.
Затем проверьте его значение, если оно равно> = 10, затем используйте вызов redirect () и установите значение базы данных обратно в 0.

0

Другие решения

Если вы не хотите изменять внутренний код, вы можете просто написать JavaScript, который выполняет перенаправление. Например,

if (Math.random() <= 0.1) {
location.href = '/url-to-redirect-to';
}

Если вы хотите, чтобы пользователи имели постоянный опыт. Вы можете сохранить некоторые значения в куки, которые будут указывать, что они перенаправлены.

var cookieValue = cookie.get(key);

if (cookieValue === 'redirect' || !cookieValue && Math.random() <= 0.1) {
cookie.set(key, 'redirect');
location.href = '/url-to-redirect-to';
} else {
cookie.set(key, 'no-redirect');
}

Именно так работает фронтальное A / B-тестирование. Вот Вы можете увидеть более сложный пример распределения трафика между многими экспериментами с различными процентами трафика и условиями назначения.

Однако в вашем случае простого if будет достаточно.

0