2012-03-20 2 views
1

URL을 [0,50] 범위의 숫자로 매핑하려고 시도했지만 포트가 망치지 않도록 범위에 균등하게 분산되어야합니다.URL을 임의의 포트 범위로 매핑

아래 코드는 내 코드이지만 왜 모듈러스가 작동하지 않는지 알아낼 수 있습니다. 모든 0이 마음에서 "사용자"를 계속 반환 $의 port_index까지 작동처럼

$fetch_url = "http://74.125.224.72/profile/user"; 
    $hash = sha1($fetch_url); 
    $hasher = substr($hash,1,50); 
    $port_index = hexdec($hasher)%50; 
    $port = 8700 + $port_index; 

때마다 다른 실제 이름 인 것 같다.

최종 목표는 아래에 기록됩니다

http://74.125.224.72/profile/j - port = 8701 
    http://74.125.224.72/profile/m - port = 8702 
    http://74.125.224.72/profile/p - port = 8703 

그리고 매번 그런 식으로 사용자가 로그인 및 프로필을 명중해야한다.

아이디어가 있으십니까?

감사 -J

답변

1

나는 문제가 SHA1 해시의 hexdec 변환 PHP는 좀 숫자로 처리를 중지 너무 큰 것을 믿습니다. 해시의 마지막 몇 문자와 그 16 진수를 잘라 내야합니다. substr으로 시도한 것처럼 보였지만 sha1은 40 자이고 50 substr을 수행했습니다. 그게 실수 였나요?

때문에 hexdec은 '5.4627305075531E + 46'과 같은 값을 반환하여 모듈러스를 제대로 통과하지 못합니다. 시도 :

$fetch_url = "http://74.125.224.72/profile/user"; 
$hash = sha1($fetch_url); 
$hasher = substr($hash,-5); // get last 5 
$port_index = hexdec($hasher)%50; 
$port = 8700 + $port_index; 
+0

그랬습니다. 감사합니다 kingcoyote. – JMP

관련 문제