1

2 秒ごとに混合される単語の効果が得られるように、2 秒ごとに更新されるランダムな文字列が必要です。これは私のコードです:

function rand_string( $length ) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  

    $size = strlen( $chars );
    for( $i = 0; $i < $length; $i++ ) {
        $str .= $chars[ rand( 0, $size - 1 ) ];
    }

    return $str;

次に、これを無制限ではなく何度も繰り返したいので、次のコードを使用しました。

$random = rand_string( 9 );
for($i=0; $i < 5; $i++) {
   echo $random;
   flush();
   sleep(2);
}

どういうわけか、ページは 10 秒待ってから文字列を表示し、文字列は 5 回同じように表示され、2 秒ごとに更新されるのは 1 回ではありません。手伝っていただけませんか?

4

4 に答える 4

0

あなたはまだ Web 開発の基礎を理解していません。あなたが書いた単一の PHP スクリプトは、最初に文字列を生成し、次に 5 回ループし、生成された文字列を出力してから 2 秒間スリープし、スクリプトが終了するとブラウザーにフラッシュされます。そのため、関数を 1 回しか呼び出していないため、10 秒後に 5 つの同一の文字列が表示されることは明らかです。

「HTTPリクエスト」であるステートレスなものでは、2秒ごとに新しい文字列を表示することは不可能です。その効果を得るには、2 秒ごとにクライアント側から呼び出される Ajax コールバックを使用する必要があります。

于 2013-04-13T11:12:22.947 に答える
0
header('Content-Type: text/html; charset=UTF-8');
function rand_string( $length ) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  

    $size = strlen( $chars );
    for( $i = 0; $i < $length; $i++ ) {
        $str .= $chars[ rand( 0, $size - 1 ) ];
    }

    return $str;
}
for($i=0; $i < 5; $i++) {
   $random = rand_string(9);
   echo $random;
   flush();
   ob_flush();
   sleep(2);
}

ループ内で変数 $random new を定義する必要があります。

于 2013-04-13T11:12:58.580 に答える
0

どういうわけか、ページは 10 秒待ってから、私の文字列を表示します

まず、PHP はあなたが望むことを行うことができません。PHP は Web ページのコンテンツをブラウザに送信し、ブラウザはそれを表示します。

そのため、ブラウザーは、ページの表示を開始する前に、受信する必要があるデータの量を選択する場合があります。

あなたの遅延があります: 5 回sleep(2);. ブラウザは、データを表示する前に接続の終了を待ちます。

私の文字列は5回同じように表示されます

第 2 に、以下のコードは変数の内容の 5 倍しか出力せず$random、これは for ループで変更されることはありません。つまり、同じ内容の 5 回です。

$random = rand_string( 9 );
for($i=0; $i < 5; $i++) {
   echo $random;
   flush();
   sleep(2);
}

あなたの繰り返しがあります:5回echo $random;

ノート

  • $random変数です。rand()機能についてはこちらをご覧ください
  • ランダム文字列については、以下を参照してください: PHP ランダム文字列ジェネレーター
  • PHP は、あなたがやりたいことには適していないかもしれませんI need a random string that refreshes every two seconds。更新部分は、javascript を使用するか、最悪の場合、2 秒ごとにページを更新し、古い文字列と共に新しい文字列を表示することによって取得できます。これにより、新しい文字列が追加されたという錯覚が残ります (間に醜いページの読み込みの瞬間があります)。
于 2013-04-13T11:15:41.480 に答える