0

まず、私が間違っている場合は修正してください。ただし、Sleep() 関数を実行すると、スクリプトの最初ではなく、スクリプト内の場所でスクリプトの実行が一時停止されると想定しています。それが本当なら、誰かが以下のスクリプトが 5 秒間待ってから両方のエコーを同時に表示する理由を教えてください。ページの読み込み時に最初のステートメントをエコーせず、5 秒待ってから 2 番目のエコーを起動します....

      echo "Your account username has been updated, you will now be redirected to the home page!";
      sleep(5);
      echo "REDIRECT!";
4

1 に答える 1

2

あなたのコードでは、PHP の実行は 5 秒間一時停止しますが、部分ごとにレンダリングされません。つまり、最初のステートメントと 2 番目のステートメントは表示されません。PHP はすべての値を出力バッファーに保持し、実行が終了したときにそれらを表示します。

何が起こるかというと、最初のエコーの値を出力バッファーに保持し、5 秒間待機してから、別のエコー出力を出力バッファーに保持し、すべてを一度に表示します。

あなたがやろうとしていることは、JS の方がはるかに簡単です。

echo "Your account username has been updated, you will now be redirected to the home page!";
echo "<script> document.setTimeout(function() { document.location('redirect.html'); }, 5000); </script>";
于 2013-07-15T23:08:18.720 に答える