>  기사  >  백엔드 개발  >  PHP에서 라운드 로빈 가중치 라운드 로빈 알고리즘을 구현하는 방법

PHP에서 라운드 로빈 가중치 라운드 로빈 알고리즘을 구현하는 방법

*文
*文원래의
2018-01-02 11:09:121530검색

PHP에서 라운드 로빈 가중치 라운드 로빈 알고리즘을 구현하는 방법은 무엇입니까? 이 기사에서는 주로 라운드 로빈 가중치 라운드 로빈 알고리즘의 PHP 구현 코드를 소개합니다. 그것이 모두에게 도움이 되기를 바랍니다.

먼저 PHP 스크립트 언어를 사용하여 코드를 입력하세요.

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

출력 결과:

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

로드 밸런싱 서버에서 구현 알고리즘 중 하나는 라운드 로빈 가중치 회전입니다. 즉, 백엔드 서버 목록에서 각 서버는 채택 가능성을 나타내는 가중치로 표시됩니다.

이 코드는 백엔드 중단 및 기타 상황을 고려하지 않고 참조용으로만 구현 방법을 알 수 있습니다.

관련 권장 사항:

php 알고리즘 분할 배열 , 사용하지 않음 array_chunk()_PHP 튜토리얼

php를 통해 간단한 확률 테스트

php 부분 문자열 위치의 상호 교환을 구현하는 방법

위 내용은 PHP에서 라운드 로빈 가중치 라운드 로빈 알고리즘을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.