Home > Backend Development > PHP Tutorial > Round robin weighted round robin algorithm PHP implementation code, roundrobin_PHP tutorial

Round robin weighted round robin algorithm PHP implementation code, roundrobin_PHP tutorial

WBOY
Release: 2016-07-12 08:50:58
Original
1187 people have browsed it

round robin weighted round robin algorithm PHP implementation code, roundrobin

first enter the code, using PHP scripting language

<&#63;php

/* 
 * Copyright (C) FatHong
 */

/* 数据初始化,weight: 权重 */
$hosts['a'] = array('weight' => 5, 'current_weight' => 0, 'count' => 0);
$hosts['b'] = array('weight' => 3, 'current_weight' => 0, 'count' => 0);
$hosts['c'] = array('weight' => 2, 'current_weight' => 0, 'count' => 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['weight'];

    $current['current_weight'] += $weight;
    $total += $weight;

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

  $hosts[$best]['current_weight'] -= $total;
  $hosts[$best]['count']++;

  $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 weight rotation, which means each server is marked with a weight in the back-end server list to represent its probability of being adopted.

This code strips out the simplest process and does not consider backend hangs and other situations. You can know how it is implemented. It is for reference only.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1133053.htmlTechArticleround robin weighted round robin algorithm PHP implementation code, roundrobin code first, using PHP script language php/* * Copyright (C) FatHong *//* Data initialization, weight: weight*/$hosts['a'] = a...
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