Допустим, есть 3 ссылки:
Как бы я пошел о создании системы перенаправления на основе ротации?
Вот как это будет работать:
Пользователь открывает http://example.com а затем перенаправляется на http://example.com/1
URL http://example.com/1
(то, на что перенаправляется пользователь, сохраняется в текстовом файле с URL-адресом в качестве значения текстового файла)
Когда другой пользователь посещает http://example.com
вместо того, чтобы быть перенаправленным на http://example.com/1, он будет перенаправлен на http://example.com/2. Код должен знать, чтобы перенаправить на http://example.com/2 вместо / 1, поскольку / 1 хранится в текстовом файле. После перенаправления пользователя значение текстового файла изменяется с … / 1 на … / 2.
То же самое происходит, когда следующий пользователь посещает, но перенаправляется на … / 3.
Четвертый пользователь перенаправляется на … / 1
И так далее
<?php
$link[0] = array('link' => 'http://example.com/1', 'percent' => 33);
$link[1] = array('link' => 'http://example.com/2', 'percent' => 33);
$link[2] = array('link' => 'http://example.com/3', 'percent' => 33);
$percent_arr = array();
foreach($link as $k => $_l) {
$percent_arr = array_merge($percent_arr, array_fill(0, $_l['percent'], $k));
}
$random_key = $percent_arr[mt_rand(0,count($percent_arr)-1)];
$redirectlink = $link[$random_key]['link'];
?>
<a href="<?php $redirectlink ?>">Click to redirect</a>
В настоящее время я использую этот код, но он не предоставляет мне то, что нужно.
Если вы используете базу данных со своим сценарием, я бы рекомендовал использовать временные метки:
Вы создаете таблицу с 3 столбцами, id
siteurl
lastvisit
,
Создайте запрос, который получит сайт, который был посещен давным-давно.
Когда пользователь заходит на ваш сайт, он перенаправляется туда, где он принадлежит. Временная метка сайта обновляется.
Если у вас нет базы данных, просто используйте .txt.
Если я правильно понимаю ваш текст, вам не нужна взвешенная маршрутизация, поэтому
просто сохраните индекс следующего маршрута в вашем текстовом файле и вращайте его при каждом вызове.
Читать файл:
$link[0] = array('link' => 'http://example.com/1');
$link[1] = array('link' => 'http://example.com/2');
$link[2] = array('link' => 'http://example.com/3');
$next = intval(file_get_contents('next.txt')); // $next -> 0
$redirectTo = $link[$next];
Теперь поверните и запишите файл:
$next = ($next === 2) ? 0 : next +1;
file_put_contents('next.txt', $next);
//redirect ...