web-dev-qa-db-ja.com

ユーザー登録時に一意のID番号を生成するための最速の方法は何ですか

私は、ユーザーを登録し、彼らが登録を完了したときに彼らに固有のID番号を与えたいクライアントを持っています。 (会員番号種類のもの)

上位10桁の範囲のID番号を開始するようにWPメンバテーブルを設定することはできますか?

ユーザーエクスペリエンスは次のようになります。

  1. ユーザーがサイトにアクセスする
  2. ユーザー登録
  3. WPは10桁のID番号を発行します
1
Nohl

IDテーブルのusers列はAUTO_INCREMENTなので、 ベースカウンタを高い数値に設定できます

ALTER TABLE wp_users AUTO_INCREMENT = 1000000000;

すべての新規ユーザーはこの値より高いIDを持ちます。誤って低い数に設定した場合(InnoDBテーブル内で)何も起こらない場合、または(MyISAMテーブル内で)既存の最大数+1に設定された場合、この操作を呼び出しても安全です。

3
Jan Fabry

IDフィールドは間違いなく機能します。もっと大きい数がほしいと思うならそれにちょうど10,000を追加することができますそしてそれはまだユニークです。

これを行う他の方法はもっと複雑になります。 wp_optionsテーブルに値を格納してからフェッチ、インクリメント、保存することができますが、2人が同じ番号になる可能性がある小さなウィンドウがあります。衝突。選択したユーザー情報の一部からMD5(またはSHA1)ハッシュを生成できますが、これにより文字列が大きくて厄介なものになります。衝突の可能性はほとんどなくなるので、これは複数のシステムにわたってUUID(Universally Unique ID)を生成するときに役立ちます。

2
Peter Rowell

登録プロセスにフックして(preデータがDBに送信される)、空のスペースのためにpreg_replaceを指定してuser_registeredテーブルからwp_usermeta列を変更するのも簡単だろうと思います。あなたが正確に同じ秒にそれらを提出しない限り、それらはユニークであるでしょう。登録プロセスの後に値を変更しても値は変更されません。必要に応じて、登録時間による注文が可能になります。

0
kaiser