web-dev-qa-db-ja.com

何を使うの? time()関数または$ _SERVER ['REQUEST_TIME']?どちらが良いですか?

これらの2つの時間関数のうちどちらが優れていますか?

私のウェブサイトには、マイクロ秒以下ごとに数千人のユーザーから送信されるフォームがあります。つまり、サーバー上で同時に数千のリクエストが送信されます。

なので、実行時にスリープを使わないものを使いたいです。また、_$_SERVER['REQUEST_TIME']_とtime()はどのくらいユニークですか?両方ともマイクロ秒ごとに変化しますか?

フォームを送信するたびに$ _SERVER ['REQUEST_TIME']は変更されますか?同様に、time()関数は時差ごとに変化します。

2つのいずれかから生成された一意の結果を追加する検証のために、ユーザーに一意のURLを指定する必要がありますか?また、microtime()を使用すると、PHPスリープしますか?

14
sqlchild

場合によります。

_$_SERVER['REQUEST_TIME']_は、リクエストが開始された時刻に対応し、Webサーバーがこのデータを提供します。

time()は、この行が呼び出された時刻を確認するために、実際にsyscallを実行します。

私たちがあなたに完全な答えを与えることができるように、あなたはあなたがしたいことをより具体的にする必要があります。

14
Intrepidd

php.netから:

$ _SERVER ['REQUEST_TIME_FLOAT'];
マイクロ秒の精度でのリクエスト開始のタイムスタンプ。

http://php.net/manual/en/reserved.variables.server.php (ただし、注意してください。REQUEST_TIMEの使用に関するAlisterのメモを参照してください)

6
DayloStar

time()は1秒に1回変更されます。 microtime()(オプションで、(true)) さらに頻繁に。

$_SERVER['REQUEST_TIME']は、PHPプロセスの開始時に設定されますが、これは単純な変数ルックアップであり、非常に高速です。ほとんどの場合、特にプロセスの場合、マイクロ秒の解像度は必要ありません。とにかくウェブページを生成するためにほんの一瞬だけ実行されます。

6
Alister Bulman

_$_SERVER['REQUEST_TIME']_はセッションが開始された時間であり、time()またはmicrotime()を使用する場合とは、その実行に対して一定であるという点で完全に異なります。

2
deed02392

検証のために一意にする必要がある場合は、time()、microtime()、またはuniqid()を使用する必要があります。

質問は、なぜあなたはユニークであるために時間が必要なのですか?

編集:あなたがあなたの質問を編集したからです。

$ _SERVER ['REQUEST_TIME']は、リクエストの開始のタイムスタンプを提供します。ユーザーがリクエストする時間に応じて変化します。

1
Wayne Whitty

microtime() に基づいてミリ秒を考慮する必要があります

$milliseconds = round(microtime(true) * 1000);
1
Mihai Iorga