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;
}