-PHP Tips- 第11回 ob_start

| | コメント(3)

ob_start関数はクッキーやtext/html以外のMIMEタイプを出力するためだけのもの?
【Tips】ob_startを使うと数倍高速!
【Description】ob_start関数はクッキーを用いる場合などによく使われますが、通常のhtmlの出力の際にob_start関数とob_end_flush関数を使うと、echo関数やprint関数などの出力をバッファリングしてからapacheのAPIに出力を引き渡すと考えられるため(phpのソースを見たんですが確認できず(^^ゞ)、高速になります。
バッファリングしない場合、ob_implicit_flush関数を明示する方法もあります。

バッファリングしない場合

<?php
$start_time
= getmicrotime();
define("WORK_TIME", 10000);

function
getmicrotime(){
    list(
$usec, $sec) = explode(" ",microtime());
    return ((float)
$usec + (float)$sec);
}

echo(
"<html><head><title>バッファリングの比較</title></head><body>");
for(
$i = 0; $i < WORK_TIME; $i++){
    echo((int)
$i."<br>\n");
}
$time = sprintf("%.4f", getmicrotime() - $start_time);
echo(
"バッファリングをした場合:".$time."秒</body></html>");
?>

バッファリングする場合

<?php
ob_start
();
$start_time = getmicrotime();
define("WORK_TIME", 10000);

function
getmicrotime(){
    list(
$usec, $sec) = explode(" ",microtime());
    return ((float)
$usec + (float)$sec);
}

echo(
"<html><head><title>バッファリングの比較</title></head><body>");
for(
$i = 0; $i < WORK_TIME; $i++){
    echo((int)
$i."<br>\n");
}
$time = sprintf("%.4f", getmicrotime() - $start_time);
echo(
"バッファリングをした場合:".$time."秒</body></html>");
ob_end_flush();
?>

コメント(3)

cobob :

Operaからコメントしたら、ソースの表示がおかしいので修正。

バッファリングしない場合のソースの1行目に、
ob_implicit_flush();
を挿入しる。

wakko :

質問がございますが、
ob_startとsmartyとの組み合わせは可能でしょうか

ob_startは変数($aaaとか)に入れる方法はわからないので、
躓いてしまい、結構困っています。
もしご存知でしたら教えていただきたい。

りお :

smartyとは特に関係無いですよん。普通にphpの最初に入れれば良いだけですし、もしphp.iniを編集出来るんであれば、そっちで設定しちゃうことも出来ます。

コメントする


画像の中に見える文字を入力してください。

Google Adsense

このブログ記事について

このページは、rioが2003年12月19日 18:36に書いたブログ記事です。

ひとつ前のブログ記事は「-PHP Tips- 第10回 strcmpと==」です。

次のブログ記事は「-PHP Tips- 第12回 リテラルの展開」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.23-ja

楽天

Google Adsense