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['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; }
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!