PHP 多维数组的排序----服务器负载均衡的应用

array_multisort 在php 中该函数实现多维数组的排序功能,在呼叫中心或者计费服务器中,或许我们需要实现多台服务器按权重(百分比)的模式进行对语音进行分发,那么该函数将帮助你实现该需求。

实例中core_callback_setting 将会保存可以使用的服务器的配置信息:

id---字段ID,也是服务器的ID标记

,ast_ob_servername ---服务器的名字标识,

,ast_ob_host-----服务器IP地址

,ast_ob_port-----AMI 服务器端口

,ast_ob_user-----AMI 服务器验证用户名

,ast_ob_pwd-------AMI 服务器验证密码

,percent_rate-----服务器权重

,current_threads----服务器当前并发

,max_threads-------服务器最大并发

,last_dispatch_time---最近一次分发到该服务器的时间

,ast_version-------软交换的版本

下面将是具体实现的逻辑函数

//function get cb server
function get_callback_srv()
{
  global $conn;
  $cb_srv_ary=array();
  $srv_tmp_ary1=array();
  $srv_tmp_ary2=array();
  
  $sql="SELECT id,ast_ob_servername,ast_ob_host,ast_ob_port,ast_ob_user,ast_ob_pwd,percent_rate,current_threads,max_threads,last_dispatch_time,ast_version FROM core_callback_setting WHERE state AND percent_rate";
  #echo $sql,"\n";
  $rslt=mysql_query($sql,$conn);
  $rcnt=mysql_num_rows($rslt);
  if($rcnt>0)
    {
      if($rcnt ==1)
         {
           #echo "目前只有一个服务器满足要求.....\n";
           $cb_srv_ary=mysql_fetch_assoc($rslt);
         }
      else
      {
       for($j=0;$j<$rcnt;$j++)
         {
          $row=mysql_fetch_assoc($rslt);
          $srv_id=$row[‘id‘];
          $srv_tmp_ary1[$srv_id]=$row;
          $r_rate=round($row[‘current_threads‘]/$row[‘percent_rate‘],4);
          $srv_tmp_ary2[]=array(‘srv_id‘=> $row[‘id‘],
                             ‘last_dispatch_time‘ => $row[‘last_dispatch_time‘],
                             ‘r_rate‘=> $r_rate);
         }
         ##获取记录后,对记录进行排序
         foreach($srv_tmp_ary2 as $key => $row)
             {
               $val1[$key]=$row[‘r_rate‘];
               $val2[$key]=$row[‘last_dispatch_time‘];
             }
          ##数组排序
          array_multisort($val1,SORT_ASC,$val2,SORT_ASC,$srv_tmp_ary2);
          #print_r($srv_tmp_ary2);
          ##获取第一个
          #echo ">>>>>>>>>>>>>>>>>>>>>>>>\n";
          $srv_id=$srv_tmp_ary2[0][‘srv_id‘];
          #print_r($srv_tmp_ary1[$srv_id]);
          $cb_srv_ary=$srv_tmp_ary1[$srv_id];
          
      }
      
    }
    else
    {
      writelog($sql);
    }
    return $cb_srv_ary;
}

PHP 多维数组的排序----服务器负载均衡的应用

时间: 2024-08-12 05:24:25

PHP 多维数组的排序----服务器负载均衡的应用的相关文章

php多维数组自定义排序 uasort()

php内置的排序函数很多:正反各种排: 常用的排序函数: sort() - 以升序对数组排序rsort() - 以降序对数组排序asort() - 根据值,以升序对关联数组进行排序ksort() - 根据键,以升序对关联数组进行排序arsort() - 根据值,以降序对关联数组进行排序krsort() - 根据键,以降序对关联数组进行排序 基本都能满足需求了:关于这些函数的使用方法就不多啰嗦了: 但是在项目的实际开发中还是会有些更加苛刻的排序需求:今天要介绍的排序函数是: uasort() ua

array_multisort—对多个数组或多维数组进行排序

From: http://www.cnblogs.com/lwbqqyumidi/archive/2013/01/31/2887188.html PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的

PHP array_multisort—对多个数组或多维数组进行排序

PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以行来排序--这类似于 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推.--这句话是理解此函数用法的关键. 第一个参数必须是一个数组.接下来的每个参数可以是数组或者是下面列出的排序标志. 排序顺序

二维数组的排序

1 result =[['7250','1'],['7510','2'],['7759','0'],['6523','33']] 2 3 copy_result = [] 4 5 for item in result: 6 copy_result.append([int(item[0]),item[1]]) 7 8 print result 9 # output: 10 # [['7250', '1'], ['7510', '2'], ['7759', '0'], ['6523', '33']]

php二维数组自定义排序

PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义. 以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义: function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){

PHP对多维数组的排序-也是个蛋疼的问题

1. 排序最好是放在数据库中做,但是有时候得在php中对多维数组排序 code :  参考网上上的 按某个字段排序 /** * 二维数组排序 * @param array $data 一个二维数组 * @param string $direction 排序方式('SORT_DESC' OR 'SORT_ASC') * @param string $field 排序字段 */ public static function sort_two_array($data,$direction='SORT_

php 二维数组自定义排序

有时候需要对一个二维数组进行排序,自定义对应的排序规则,比如对一个班级里面的同学,先按身高降序排序,身高相同的,再按体重降序排序... 代码: <?php $array = [ ["id" => "1", "name" => "a", "age" => "19",], ["id" => "2", "name&

java中二维数组的排序

首先定义一个5X8的二维数组,然后使用随机数填充满.借助Arrays的方法对二维数组进行排序.参考思路:先把二维数组使用System.arraycopy进行数组复制到一个一维数组然后使用sort进行排序最后再复制回到二维数组. 关于随机数0-100的 随机整数的获取办法有多种,下面是参考办法之一: import java.util.Arrays; public class TwoDimenSort { public static void main(String[] args) { int xL

服务器负载均衡数据同步的实现

今天老师讲了服务器的架构,虽然简单,但还是有难点的,还要在此基础上进行扩展. 其中有关于服务器负载均衡时的数据同步,百度过后,看到了前辈们的分享: 利用inotify+rsync实现linux文件批量更新 批量同步.批量更新,这应该是做运维的朋友们经常做的工作,rsync是linux下一款非常强大的同步工具,采用差异同步的方法,只上传文件/文件夹的不同部分,同时可以对上传部分先进行压缩,所以rsync的传输效率是很高的但rsync也有缺点,最大的问题就是每次执行rsync命令都会遍历目标目录,当