0

ループ内で受け取った情報を含むテーブルの行を印刷しようとしています。これは機能しますが、ループする配列には約 200 個の項目があり、すべての項目がチェックされるまでハングします。各反復で行を印刷する方法はありますか? 私が使用するサンプルコード:

        foreach ($array_check as $dns) {
        if (checkdnsrr($dns. '.',"A")) {
            $ret = "<tr> 
                <td><span class='badge badge-important'><i class='icon-remove icon-white'></i></span></td>
                <td>$dns</td>
                <td>-</td>
                <td>-</td>
                <td>-</td>
                <td>option</td>
                </tr><br/>";
            echo $ret;
        } else {
            $ret = "<tr>
                <td><span class='badge badge-success'><i class='icon-ok icon-white'></i></span></td>
                <td>$dns</td>
                <td>-</td>
                <td>-</td>
                <td>-</td>
                <td>option</td>
                </tr><br/>";
            echo $ret;
        }
        flush();
        ob_flush();
        usleep(1000000);
    }

どんな提案でも大歓迎です。私はこれに関してインターネットをたくさん検索しました。ほとんどの場合、オフにする必要があるoutput_bufferingとgzipもオフにする必要があります。

両方とも無効にしていますが、出力が表示される前に終了するまでハングします。

前もって感謝します!

4

2 に答える 2

0

usleep(1000000); を使用しているため、表示に時間がかかります。1秒待ちます。

if else を使用してこのクラスまたはそのクラスで行を表示する代わりに、次のように簡単に実行できます。

    foreach ($array_check as $dns) {
        echo "<tr> 
            <td><span class='badge badge-".((checkdnsrr($dns. '.',"A"))?'important':success)."'><i class='icon-remove icon-white'></i></span></td>
            <td>$dns</td>
            <td>-</td>
            <td>-</td>
            <td>-</td>
            <td>option</td>
            </tr><br/>";
    flush();
    ob_flush();
    usleep(1000000);
}
于 2013-07-20T16:15:31.997 に答える
0

まず、HTML を少し修正します。 の<br>後に は必要ありません<tr><tr>それは実際には間違っています。テーブル本体の内部以外のものを入れるべきではありません。

あなたの質問について、私が正しければ、ループが実行されている間に出力を行ごとに印刷したいと思いますよね?
あなたがしようとしたことは、非常にブラウザに依存する、より良い変更アプローチです.AJAX経由でデータをリクエストし、phpスクリプトで次を使用するだけです:

$output = array();
foreach ($array_check as $dns) {
    $output[] = checkdnsrr($dns. '.', "A");
}
header('Content-type: application/json');
echo json_encode($output);

次に、JavaScript を使用してクライアント側で HTML を解析し、好みのタイミングを追加するか、JQuery を使用して派手なアニメーションを追加します。

編集:忘れていましたcheckdnsrr、修正しました。

于 2013-07-20T16:10:36.317 に答える