ホームページ  >  記事  >  バックエンド開発  >  PHP キャッシュについてどのくらい知っていますか? PHP キャッシュの原理と使用法の詳細な探索_PHP チュートリアル

PHP キャッシュについてどのくらい知っていますか? PHP キャッシュの原理と使用法の詳細な探索_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:39:53833ブラウズ

PHP はそのパワーとスケーラビリティにより、従来の ASP ウェブサイトと比較して、速度の面で絶対的な優位性を持っています。mssql に 60,000 個のデータを転送したい場合、PHP は 40 秒かかります。は ASP よりも速くありません。ただし、Web サイトにはデータが増え続けるため、毎回データベースからデータを削除する必要がなく、他の場所からデータを呼び出すことができます。ファイルや特定のメモリアドレスなど、PHP のキャッシュ技術、つまり Cache テクノロジです。

徹底した分析

一般的に、キャッシュの目的は、アクセスを高速化するためにデータを 1 か所に置くことです。メモリが最速であることは間違いありませんが、これはもちろん非現実的です。たとえば、ob_start() キャッシュ ページがオンになっている場合、ページのコンテンツは、ページ出力が自動的にクリアされるまで、ファイル ヘッダーを送信する前にメモリにキャッシュされます。 ob_get_contents の戻り値、または ob_end_clean によって表示されます。これは静的ページの生成によく使用され、テンプレートによく反映されます。

さらに、ASP にはパブリックパラメータを保存できるオブジェクトアプリケーションがありますが、これもキャッシュとみなされます。しかし、PHP では、開発者がそのようなオブジェクトを作成するのを今のところ見たことがありません。ページ キャッシュはビューステートを使用し、キャッシュはファイルの関連付けです (必ずしも正確であるとは限りません)。ファイルが変更されずにタイムアウトしない場合 (注 1)、キャッシュが読み取られます。結果が返されます。これがこのソースコードを見てください。

<ol class="dp-c">
<li class="alt"><span><span><?PHP </span></span></span></li>
<li>
<span class="keyword">クラス</span><span>キャッシュ{ </span>
</li>
<li class="alt">
<span class="keyword">プライベート</span><span> </span><span class="vars"></span><span>プライベート</span>
</li> <li>
<span class="keyword">$expire Time</span><span>=180;</span> <span class="vars">//キャッシュ時間は 60 です秒 </span><span> </span><span class="comment"></span><span>function</span>
</li> __construct(<li class="alt">
<span class="keyword">$cache_dirname</span><span>){ </span><span class="vars"></span><span> </span>
</li>if<li>
<span>(!@ </span><span class="keyword">is_dir</span> <span>(</span><span class="func">$cache_dirname </span><span>)){ </span><span class="vars"></span> <span> </span>
</li>if<li class="alt">
<span>(!@</span><span class="keyword">mkdir</span><span>(</span><span class="func">$cache_dirname</span><span>,0777)){ </span><span class="vars"></span> <span></span>
</li>$this<li>
<span>->warn( </span> <span class="vars">キャッシュ ファイルが存在しないため、手動で作成する必要があります </span><span>); </span><span class="string"></span><span>$this</span>
</li>->cache_dir = <li class="alt">
<span>$cache_dirname</span> <span class="keyword">; </span><span></span>
</li> <li><span></span></li>function<li class="alt"><span> __destruct(){ </span></li>
<li>
<span class="vars"> </span><span>echo</span><span class="vars"> </span><span>キャッシュクラスバイ。</span>
</li>
<li class="alt"><span>} </span></li>; <li> <span class="keyword"> </span><span></span>
</li>関数<li class="alt">
<span>get_url() { </span><span class="func"></span><span> QUEST_URI</span><span class="string">])) { </span><span></span>
</li> <li> = <span></span>$_SERVER</li>
<li class="alt">[<span></span>REQUEST_URI</li>
<li>]; }<span class="keyword"></span>else<span></span>{ ] ; QUERY_STRING</li>
<li class="alt">]) ?<span></span>?<span class="keyword"></span> . <span></span>$ _SERVER<span class="vars"></span>[<span></span>QUERY_STRING<span class="string"></span>] : <span></span>
</li>
<li> } <span></span><span class="vars"></span> ️</li>
<li class="alt"><span><span>function warn($errorstring){ </span></span></li>
<li>
<span>echo "</span><strong><font color="#006699"><span class="tag"><</span><span class="tag-name">b</span><span class="tag">></span><span class="tag"><</span><span class="tag-name">フォント</span> </font></strong> <span></span><span class="attribute">カラー<font color="#ff0000"></font></span> =<span></span><span class="attribute-value">red<font color="#0000ff"></font></span><span class="tag"><strong>> エラーが発生しました: <font color="#006699"></font></span></font></strong><<span></span>pre<strong><font color="#006699">><span class="tag"></span><span class="tag-name"></span>".$errorstring." <span class="tag"></span> プレ <span>></span><strong></<font color="#006699"><span class="tag">フォント</span><span class="tag-name">><span class="tag"></</span><span class="tag">b</span><span class="tag-name">></span><span class="tag"></span><span class="tag">"; </span><span class="tag-name"></span><span class="tag"> </span>関数cache_page($pageurl,$pagedata) { </strong><span></span> if(!$</li>
<li class="alt"><span>fso</span></li>
<li>=<span></span>
</li>fopen<li class="alt">
<span></span>($pageurl,w)){ </li>
<li>
<span></span> $this- <span class="attribute"><font color="#ff0000"></font>> //LOCK_NB 、排他的ロック</span><span></span><span class="attribute-value"> $this-<font color="#0000ff"></font></span><span>></span>
</li>
<li class="alt">
<span>warns(キャッシュファイルをロックできません。);//trigger_error </span><span class="tag"><strong><font color="#006699"> return false; </font></strong> if(!fwrite ($fso,$pagedata)){//バイト ストリームを書き込み、シリアル化して他の形式を書き込みます </span><span></span>
</li> $this-<li><span></span></li>><li class="alt"><span></span></li>warns(キャッシュ ファイルを書き込むことができません。);//trigger_error <li><span></span></li> return false; <li class="alt">
<span></span><span class="tag">} <strong><font color="#006699"></font></strong> flock($fso,LOCK_UN);// ロックを解除します </span><span></span>
</li> return true ; <li>
<span></span>
</li>
<li class="alt"><span>http://www.bkjia.com/PHPjc/486256.html</span></li>www.bkjia.com<li><span>tru​​e</span></li>http://www.bkjia.com/PHPjc/486256.html<li class="alt">
<span>技術記事</span><span class="tag"> PHP はそのパワーとスケーラビリティにより、近年大幅な進歩を遂げており、従来の ASP Web サイトと比較して、60,000 個のデータを mssql から PHP に転送する場合、所要時間は 40 秒です。 ASPほど高速ではありません..<strong><font color="#006699"></font></strong>
</span><span></span>
</li>
</ol>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。