PHPに基づくUUID/GUID/uniqid置換方法とその信頼性の論述


なぜ持参したuniqidを使わないのですか?ほとんどの場合、phpが持参したマイクロ秒ベースのuniqid()関数を用いて一意の識別を生成することは可能である.しかし,マイクロ秒ベースである以上,以下の2つのシナリオで重複した結果が生成される.1、マルチコンカレント2、マルチサーバの解決方法:問題の原因を知って、小魚は解決策を見つけたいと思っています.1、プログラム実行時のその瞬間の時点を取得し、これを唯一のidとする.2、プログラム実行スレッド(またはプロセス)のIDを使用して、マルチコンカレント時の一意idと同じシナリオを区別する;3、マルチサーバの場合、各サーバの一意id、例えば番号、別名、ip…を追加することで、いつでも一意の文字列を得ることができる
/**
*            hashid<br>
*   ripemd160     ,      id+       id〈br〉
*   :    +  id+     
* @TODO         ,          IP id
* @return string
*/
public static function uuid()
{
    $pid = getmypid();//  id。           ,         
    time_nanosleep(0, 1000);//  1000  =1  。            ,         ,                      。
    $timetick = microtime(TRUE)*1000;//  
    $uuid = hash('ripemd160', $pid.'+'.$timetick);
 
    return $uuid;
}