您好,登錄后才能下訂單哦!
怎么在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); } ?>
看完上述內容,你們掌握怎么在PHP中實現一個hash分布式算法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。