php hash java_PHP实现普通hash分布式算法简单示例

本文实例讲述了PHP实现普通hash分布式算法。分享给大家供大家参考,具体如下:

/*

* 普通hash分布式算法

* @param $key

* @return int

*/

class Hash{

protected $_serverList = array();

public function __construct($_serverList){

if(is_array($_serverList)){

$this->_serverList = $_serverList;

}else{

return false;

}

}

//通过hash算法返回一个整数值

protected function myHash($key){

$md5 = substr(md5($key),0,8);

$seed = 31; //种子值

$hash=0;

for($i=0;$i<8;$i++){

$hash = $hash*$seed+ord($md5{$i}); //ord 返回ascii值

$i++;

}

return $hash&0x7FFFFFFF; //0x7FFFFFFF表示最大值

}

public function getServer($key){

$servers = $this->_serverList;

$rs = $servers[$this->myHash($key)%(count($servers))];

return $rs;

}

}

$servers = array(

array('host'=>'192.168.1.1','port'=>6397),

array('host'=>'192.168.1.2','port'=>6397),

array('host'=>'192.168.1.3','port'=>6397),

array('host'=>'192.168.1.4','port'=>6397),

array('host'=>'192.168.1.5','port'=>6397),

array('host'=>'192.168.1.6','port'=>6397),

array('host'=>'192.168.1.7','port'=>6397),

);

$key = 'TheKey'.rand(0,99999);

$value = 'TheValue';

$hash = new Hash($servers);

if($hash){

$server = $hash->getServer($key);

// $memcached = new Memcached($sc);

// $memcached->set($key,$value);

}

?>

PS:这里再为大家提供2款hash相关在线工具供大家参考使用:

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:http://tools.jb51.net/password/hash_md5_sha

希望本文所述对大家PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值