0

約 6350268 文字の文字列があり、それらをブラウザーに出力すると、少なくとも 700 ミリ秒かかりますが、通常は出力に 900 ミリ秒から 1000 ミリ秒の余分な実行時間がかかります。

生成には約 300 ミリ秒しかかかりませんが、合わせるとほぼ 1 秒になります。

エコー出力を高速化する方法はありますか? または、出力先のブラウザによって制限されますか?

    // What this code does is take about 20.000 urls in the database and
    // and transform it into a collapsable folder tree
    // this process generates about 6300000 characters in about 300ms.

    $this->benchmark->mark('code_start');
    $query = $this->db->query("SELECT `url` from `site_pages` WHERE `url` not like '' order by `url` ASC");
    $arr = array();
    foreach($query->result() as $result)
        {
        $arr[$result->url] = $result->url;
        }
    $tree = $this->explodeTree($arr,'/',true);
    $str = $this->plotTree($tree);
    echo $str;
    $this->benchmark->mark('code_end');
    echo $this->benchmark->elapsed_time('code_start', 'code_end');
    echo "<P>done";
4

1 に答える 1

0

ブラウザに6MBを出力していますか?どちらの見方をしても、そのプロセスに関するすべてのことは必ず遅くなります。私の推測では、PHPバッファーと、コンテンツをバッファリング/送信するWebサーバーの組み合わせが非常に時間がかかっています。この特定のボトルネックを心配することは、焦点を当てるのに間違ったポイントのように思われます。ブラウザに6MBのデータをダンプするのではなく、より穏やかなAJAXロードを使用する必要があります。

于 2012-12-19T08:17:09.717 に答える