当前位置:主页 > php教程 > round robin权重轮循算法php实现代码

php如何实现round robin权重轮循算法

发布:2020-02-18 18:04:27 192


我们帮大家精选了PHP相关的编程文章,网友郗哲圣根据主题投稿了本篇教程内容,涉及到php、round、robin、权重轮循、round robin权重轮循算法php实现代码相关内容,已被690网友关注,涉猎到的知识点内容可以在下方电子书获得。

round robin权重轮循算法php实现代码

先上代码,采用php脚本语言

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

输出结果:

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

负载均衡的服务器中,其实现算法有种是round-robin权重轮循,就是后端的服务器列表中,给每个服务器标上权重,代表它被采用的机率。

这段代码把最简洁的流程剥离出来,没考虑后端挂起等情况,可以知道它是怎么实现的,仅供参考.


参考资料

相关文章

  • php表单微信中自动提交两次问题的解决办法

    发布:2019-09-17

    这篇文章主要介绍了微信开发之php表单微信中自动提交两次问题解决办法的相关资料,这里提供了解决办法及实例代码,需要的朋友可以参考下


  • php获得文件夹下所有文件的递归算法的代码分享

    发布:2020-07-24

    下面小编就为大家带来一篇php获得文件夹下所有文件的递归算法的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • thinkPHP5框架captcha验证码配置及验证操作详解

    发布:2019-07-01

    这篇文章主要介绍了tp5(thinkPHP5框架)captcha验证码配置及验证操作,结合实例形式分析了基于thinkPHP5框架的captcha验证码配置及验证操作具体步骤与相关注意事项,需要的朋友可以参考下


  • PHP用户验证和标签推荐的使用实例

    发布:2019-06-20

    这篇文章主要介绍了PHP用户验证和标签推荐的简单使用,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下


  • PHP入门教程之操作符与控制结构流程详解

    发布:2022-06-23

    为网友们分享了关于PHP的教程,这篇文章主要介绍了PHP入门教程之操作符与控制结构流程,结合实例形式详细分析了php基本的赋值、自增、比较、三目运算符以及if语句、switch语句、for语句等流程控制语句的使用技巧,需要的朋


  • PHP面试关于算法问题整理

    发布:2019-12-14

    下面小编就为大家带来一篇PHP面试常用算法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • ThinkPHP5.1表单令牌Token失效的解决方法

    发布:2019-07-31

    这篇文章主要给大家介绍了关于ThinkPHP5.1表单令牌Token失效问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用ThinkPHP具有一定的参考学习价值,需要的朋友们下面来一起学


  • PHP中使用mpdf导出PDF文件以及生成PDF的方法

    发布:2019-05-30

    PHP中使用mpdf 导出PDF文件的实现方法 mPDF是一个很强大的PDF生成库,能基本兼容HTML标签和CSS3样式,这篇文章通过实例代码给大家介绍PHP中使用mpdf 导出PDF文件的实现方法。 具体代码如下所示: /** * PHP 使用 mpdf 导出PDF文件 * @param $content string PDF文件内容 若为html代码,css内容分离 非id,class选择器可能失效,解决办法直接写进标签style中 * @param $filename string 保存文件名 *


网友讨论