Как разбить массив на определённые доли? Есть сервер, который принимает POST-запросты с записями. Сервер не знает сколько записей он уже принял и сколько предстоит принять за текущий сеанс. Как можно распределить все запросы на две части в равной степени?
В данный момент я использую случайные числа:$portion = intval(get_option('portion')); // В каких долях делить запросы. В процентах
if ($portion === 0 || rand(0, 100) > $portion ) {
// Одна часть
} else {
// Вторая часть
}
Но, возможно есть способ получше?

21 Авг 2019 в 06:07
192 +1
0
Ответы
1

Для равномерного распределения запросов на две части вам необходимо знать общее количество запросов, которые будут отправлены серверу. Однако, если у вас нет возможности знать заранее это количество, то можно попробовать следующий подход.

Вместо использования случайных чисел, вы можете использовать алгоритм, который будет равномерно распределять запросы на две части. Например, вы можете использовать хеш-функцию для идентификации каждого запроса и определения в какую часть его отправить. Вот пример реализации на PHP:

function distributeRequest($request)
{
$hash = md5($request); // Вычисляем хеш запроса
// Получаем целую часть хеша
$hashInt = hexdec(substr($hash, 0, 8));
// Распределяем запрос на две части
if ($hashInt % 2 === 0) {
// Одна часть
} else {
// Вторая часть
}
}
// Пример использования
$request = "some request data";
distributeRequest($request);

Этот подход гарантирует равномерное распределение запросов на две части без использования случайных чисел. Однако, помните, что это всего лишь пример и вы можете настроить алгоритм под ваш конкретный случай.

20 Апр в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 89 810 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир