Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

Server-side A/B test segmentator for eCommerce

Notifications You must be signed in to change notification settings

rees46/server-side-segmentator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Сегментатор

php 5.5+

Назначение

Проведение A/B-тестов, защищенных от внешнего вмешательства.

Сегмент пользователя устанавливается на длину его сессии (единственный верный вариант при тестировании товарных рекомендаций). Сегмент хранится в сессии PHP. Уничтожается через N часов неактивности пользователя (время устанавливается в php.ini).

Сегмент необходимо добавлять к оформленному заказу в базе данных магазина. Результаты теста считать по выполненным не отмененным заказам.

Установка

  1. Положить файл ServerSideSegmentator.php в папку с вашим проектом и подключить его

Использование

Получение сегмента пользователя в контролере

<?php

// Инициализировать эксперимент
$recSegmentator = new ServerSideSegmentator('recommendations', 3);

// Получить сегмент пользователя
$segment = $recSegmentator->getSegment();


?>

Использование в шаблонах:

...

<!-- Сегмент может быть не задан, например для поисковых роботов, поэтому проверяем его наличие -->

<?php if($segment): %>

	<?php if($segment == 'A'): ?>
		<!-- Показать рекомендер подрядчика № 1-->
	<?php endif;?>
	
	<?php if($segment == 'B'): ?>
		<!-- Показать рекомендер подрядчика № 2-->
	<?php endif;?>
	
	<?php if($segment == 'C'): ?>
		<!-- Показать рекомендер подрядчика № 3-->
	<?php endif;?>
	
	<!-- Отправить сегмент в Google Analytics -->
	<javascript>
		ga('set', 'dimension5', '<?php echo $segment ?>');
	</javascript>
	
<?php endif; ?>

...

Запись сегмента в оформленный заказ:

<?php

// ... где-то здесь получили order_id заказа
$order_id = 123;

// Добавляем сегмент к заказу
// Считаем, что у заказа может быть несколько экспериментов, поэтому сегменты пишем в отдельную таблицу "order_segments"
$recSegmentator = new ServerSideSegmentator('recommendations', 3);
$segment = $regSegmentator->getSegment();
if($segment) {
	$query = "INSERT INTO order_segments (order_id, segment) VALUES (" . $order_id . ", '" . $segment . "');";
	mysql_query($segment);
}

?>

About

Server-side A/B test segmentator for eCommerce

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages