Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie den Round-Robin-gewichteten Round-Robin-Algorithmus in PHP

So implementieren Sie den Round-Robin-gewichteten Round-Robin-Algorithmus in PHP

*文
*文Original
2018-01-02 11:09:121539Durchsuche

Wie implementiert man einen Round-Robin-gewichteten Round-Robin-Algorithmus in PHP? In diesem Artikel wird hauptsächlich der PHP-Implementierungscode des Round-Robin-gewichteten Round-Robin-Algorithmus vorgestellt. Freunde in Not können sich darauf beziehen. Ich hoffe, es hilft allen.

Geben Sie zunächst den Code mithilfe der PHP-Skriptsprache ein

<?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;
}

Ausgabeergebnis:

Array
(
[0] => a
[1] => b
[2] => > [6] => a
[7] => c
[9] => a

Im Server ist einer seiner Implementierungsalgorithmen die Round-Robin-Gewichtungsrotation, was bedeutet, dass in der Back-End-Serverliste jeder Server mit einem Gewicht markiert ist, um seine Übernahmewahrscheinlichkeit darzustellen.

Dieser Code entfernt den einfachsten Prozess, ohne Back-End-Hänge und andere Situationen zu berücksichtigen. Sie können wissen, wie er implementiert wird, nur als Referenz

Verwandte Empfehlungen:

PHP-Algorithmus zum Teilen eines Arrays ohne array_chunk()_PHP-Tutorial

PHP zur Implementierung eines einfachen Wahrscheinlichkeitstests

So tauschen Sie Teilstringpositionen in PHP aus

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Round-Robin-gewichteten Round-Robin-Algorithmus in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn