これらの2つの時間関数のうちどちらが優れていますか?
私のウェブサイトには、マイクロ秒以下ごとに数千人のユーザーから送信されるフォームがあります。つまり、サーバー上で同時に数千のリクエストが送信されます。
なので、実行時にスリープを使わないものを使いたいです。また、_$_SERVER['REQUEST_TIME']
_とtime()
はどのくらいユニークですか?両方ともマイクロ秒ごとに変化しますか?
フォームを送信するたびに$ _SERVER ['REQUEST_TIME']は変更されますか?同様に、time()関数は時差ごとに変化します。
2つのいずれかから生成された一意の結果を追加する検証のために、ユーザーに一意のURLを指定する必要がありますか?また、microtime()を使用すると、PHPスリープしますか?
場合によります。
_$_SERVER['REQUEST_TIME']
_は、リクエストが開始された時刻に対応し、Webサーバーがこのデータを提供します。
time()
は、この行が呼び出された時刻を確認するために、実際にsyscallを実行します。
私たちがあなたに完全な答えを与えることができるように、あなたはあなたがしたいことをより具体的にする必要があります。
php.netから:
$ _SERVER ['REQUEST_TIME_FLOAT'];
マイクロ秒の精度でのリクエスト開始のタイムスタンプ。
http://php.net/manual/en/reserved.variables.server.php (ただし、注意してください。REQUEST_TIMEの使用に関するAlisterのメモを参照してください)
time()
は1秒に1回変更されます。 microtime()
(オプションで、(true)
) さらに頻繁に。
$_SERVER['REQUEST_TIME']
は、PHPプロセスの開始時に設定されますが、これは単純な変数ルックアップであり、非常に高速です。ほとんどの場合、特にプロセスの場合、マイクロ秒の解像度は必要ありません。とにかくウェブページを生成するためにほんの一瞬だけ実行されます。
_$_SERVER['REQUEST_TIME']
_はセッションが開始された時間であり、time()
またはmicrotime()
を使用する場合とは、その実行に対して一定であるという点で完全に異なります。
検証のために一意にする必要がある場合は、time()、microtime()、またはuniqid()を使用する必要があります。
質問は、なぜあなたはユニークであるために時間が必要なのですか?
編集:あなたがあなたの質問を編集したからです。
$ _SERVER ['REQUEST_TIME']は、リクエストの開始のタイムスタンプを提供します。ユーザーがリクエストする時間に応じて変化します。
microtime() に基づいてミリ秒を考慮する必要があります
$milliseconds = round(microtime(true) * 1000);