PHP实现普通hash分布式算法简单示例
程序员文章站
2023-04-03 11:18:22
本文实例讲述了php实现普通hash分布式算法。分享给大家供大家参考,具体如下:
本文实例讲述了php实现普通hash分布式算法。分享给大家供大家参考,具体如下:
<?php /* * 普通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加密工具:
更多关于php相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《php编码与转码操作技巧汇总》、《php数学运算技巧总结》、《php数组(array)操作技巧大全》、《php字符串(string)用法总结》、《php数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结》
希望本文所述对大家php程序设计有所帮助。
下一篇: PHP实现的ID混淆算法类与用法示例