2
for($x=0;$x<100000;$x++) {
    echo "hello $x";
}

したがって、通常は、最初にすべての処理を終了してから、すべてを一度に印刷します。コマンドが送信されたときにメッセージを出力し続ける方法はありますか?それにより、新しいhello $xものが1つずつ追加されて表示されますか、それともjQuery / JavaScriptを使用する必要がありますか?

アップデート:

長いテストスクリプトを実行して、すべての結果をブラウザに1つずつ表示するようにしているので、ログを確認する必要がなく、色分けされた結果を視覚的に確認できます。私はこれと同様の効果を作ろうとしています:http ://tools.css3.info/selectors-test/test.html誰かがjQueryの短いサンプルを提供できれば(この方法で行う必要がある場合)、私はそれをお願い申し上げます。

4

2 に答える 2

3

出力バッファを制御することで可能ですが、主にJavaScriptDOMReadyイベントを遅延させるためです。

視覚効果を探している場合は、JavaScriptを使用する必要があります(ただし、質問の内容に基づいてAjaxの理由はわかりません)。それは簡単なで達成することができますsetInterval。最初は空であると考える<div id="hello">

var i = 0;
var timer = setInterval(function(){
    if(i == 10000) {
        clearInterval(timer);
        return;
    }
    var div = document.getElementById('hello');
    div.innerHTML += 'hello ' + i + '<br>';
    i++;
}, 250);

私はあなたの編集を見たばかりです、そして今あなたは実際にAjaxを使うべきだと思います!リンクした例はそうです。基本的に、JavaScriptでテストキューを設定する必要があります。各テストには一意のURLがあります。次に、Ajax(jQueryであり$.get、最も簡単な方法です)を使用して一度に1つのリクエストを実行するだけです。<ul>以下は、前の例のdivの代わりに、サーバーがテストごとに成功または失敗のメッセージで応答することを前提としています。

var tests = [
    'http://example.com/test1',
    'http://example.com/test2',
    'http://example.com/test3',
];

function processQueue() {
    if(tests.length > 0) {
        var test = tests.shift();
        $.get(test, function(response) {
            $('#some_ul').append('<li>' + response + '</li>');
            processQueue();
        });    
    }
}

processQueue();
于 2012-05-13T04:10:35.593 に答える
1

はい、出力バッファリングを無効にした場合:http: //php.net/manual/en/book.outcontrol.php

しかし、@ Blenderが示唆しているように、これはAJAX(通常はjQueryを使用して行う)で行う方がよいでしょう。

于 2012-05-13T03:37:10.723 に答える