Home > Backend Development > PHP Tutorial > How to implement round robin weighted round robin algorithm in PHP

How to implement round robin weighted round robin algorithm in PHP

*文
Release: 2023-03-18 21:16:02
Original
1565 people have browsed it

How to implement round robin weight round robin algorithm in PHP? This article mainly introduces the PHP implementation code of the round robin weighted round robin algorithm. Friends in need can refer to it. I hope to be helpful.

First enter the code, using php script language

<?php

/* 
 * Copyright (C) FatHong
 */

/* 数据初始化,weight: 权重 */
$hosts[&#39;a&#39;] = array(&#39;weight&#39; => 5, &#39;current_weight&#39; => 0, &#39;count&#39; => 0);
$hosts[&#39;b&#39;] = array(&#39;weight&#39; => 3, &#39;current_weight&#39; => 0, &#39;count&#39; => 0);
$hosts[&#39;c&#39;] = array(&#39;weight&#39; => 2, &#39;current_weight&#39; => 0, &#39;count&#39; => 0);

$result = array();

/* 模拟10次 */
for ($i = 0; $i < 10; $i++) {
  round_robin($hosts, $result);
}

/* 输出结果 */
print_r($result);

/* round robin 轮循 */
function round_robin(&$hosts, &$result)
{
  $total = 0;
  $best = null;

  foreach ($hosts as $key => $item) {
    $current = &$hosts[$key];
    $weight = $current[&#39;weight&#39;];

    $current[&#39;current_weight&#39;] += $weight;
    $total += $weight;

    if ( ($best == null) || ($hosts[$best][&#39;current_weight&#39;] < 
                $current[&#39;current_weight&#39;]) ) 
    {
      $best = $key;
    }
  }

  $hosts[$best][&#39;current_weight&#39;] -= $total;
  $hosts[$best][&#39;count&#39;]++;

  $result[] = $best;
}
Copy after login

Output result:

Array
(
[0] => a
[1] => b
[2] => c
[3] => a
[4] => a
[5] => b
[6] => a
[7] => c
[8] => b
[9] => a
)

Among load balancing servers, one implementation algorithm is round-robin Weighted round robin means that in the back-end server list, each server is marked with a weight, which represents its probability of being adopted.

This code strips out the simplest process, without considering back-end hangs and other situations. You can know how it is implemented, for reference only.

Related recommendations:

php Algorithm split array without array_chunk()_PHP tutorial

php implements simple probability test

How to realize the mutual swapping of substring positions in php

The above is the detailed content of How to implement round robin weighted round robin algorithm in PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template