現在の位置: ホーム> 最新記事一覧> opcache_get_configuration関数を使用して、opcacheの現在の実行ステータスをすばやく表示する方法は?

opcache_get_configuration関数を使用して、opcacheの現在の実行ステータスをすばやく表示する方法は?

gitbox 2025-06-29
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 記事の内容に関係のない事前コード部分</span></span><span>
</span><span><span class="hljs-comment">// 例えば,現在の時間の単純な出力</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在の時刻:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 記事のコンテンツパーツ:それを使用する方法を説明してください opcache_get_configuration 現在の関数をすばやく表示します OPcache ランニングステータス</span></span><span>

<span class="hljs-comment">/*
 * OPcache はい PHP バイトコードキャッシュ拡張機能,大幅に改善できます PHP スクリプト実行効率。
 * 開発と操作中,すぐに理解します OPcache 現在の状態は非常に重要です。
 * PHP 組み込み関数 opcache_get_configuration() 私たちがそれを得るのを助けることができます OPcache 構成情報とステータス。
 */</span>

<span class="hljs-comment">/**
 * 使用 opcache_get_configuration チェック OPcache 現在の実行状態へのステップ:
 *
 * 1. サーバーが有効になっていることを確認してください OPcache 拡張
 * 2. 合格 opcache_get_configuration() 構成情報を取得します
 * 3. 構成情報を分析します,キャッシュサイズに焦点を当てます、キャッシュの使用、ヒット率など。
 */</span>

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">showOpcacheStatus</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">function_exists</span></span><span>(</span><span><span class="hljs-string">'opcache_get_configuration'</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"OPcache 拡張未启用或当前 PHP バージョンはこの機能をサポートしていません。"</span></span><span>;
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }

    </span><span><span class="hljs-comment">// 得る OPcache 構成およびステータス情報</span></span><span>
    </span><span><span class="hljs-variable">$config</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opcache_get_configuration</span></span><span>();
    </span><span><span class="hljs-variable">$status</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opcache_get_status</span></span><span>(</span><span><span class="hljs-literal">false</span></span><span>); </span><span><span class="hljs-comment">// false スクリプトの詳細は表示されません,効率を向上させます</span></span><span>

    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$config</span></span><span> || !</span><span><span class="hljs-variable">$status</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法得る OPcache 構成またはステータス情報。"</span></span><span>;
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }

    </span><span><span class="hljs-comment">// 出力構成情報の例</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;h2&gt;OPcache 構成情報&lt;/h2&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;ul&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$config</span></span><span>[</span><span><span class="hljs-string">'directives'</span></span><span>] </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;li&gt;&lt;b&gt;"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>) . </span><span><span class="hljs-string">":&lt;/b&gt; "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>) . </span><span><span class="hljs-string">"&lt;/li&gt;"</span></span><span>;
    }
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;/ul&gt;"</span></span><span>;

    </span><span><span class="hljs-comment">// 出力ステータス情報の例</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;h2&gt;OPcache ランニングステータス&lt;/h2&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;ul&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;li&gt;&lt;b&gt;キャッシュ使用量:&lt;/b&gt; "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">formatBytes</span></span><span>(</span><span><span class="hljs-variable">$status</span></span><span>[</span><span><span class="hljs-string">'memory_usage'</span></span><span>][</span><span><span class="hljs-string">'used_memory'</span></span><span>]) . </span><span><span class="hljs-string">" / "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">formatBytes</span></span><span>(</span><span><span class="hljs-variable">$status</span></span><span>[</span><span><span class="hljs-string">'memory_usage'</span></span><span>][</span><span><span class="hljs-string">'size'</span></span><span>]) . </span><span><span class="hljs-string">"&lt;/li&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;li&gt;&lt;b&gt;キャッシュフラグメント:&lt;/b&gt; "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-variable">$status</span></span><span>[</span><span><span class="hljs-string">'memory_usage'</span></span><span>][</span><span><span class="hljs-string">'wasted_percentage'</span></span><span>], </span><span><span class="hljs-number">2</span></span><span>) . </span><span><span class="hljs-string">"%&lt;/li&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;li&gt;&lt;b&gt;キャッシュヒット率:&lt;/b&gt; "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">calculateHitRate</span></span><span>(</span><span><span class="hljs-variable">$status</span></span><span>) . </span><span><span class="hljs-string">"%&lt;/li&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;li&gt;&lt;b&gt;キャッシュされたスクリプトの数:&lt;/b&gt; "</span></span><span> . </span><span><span class="hljs-variable">$status</span></span><span>[</span><span><span class="hljs-string">'opcache_statistics'</span></span><span>][</span><span><span class="hljs-string">'num_cached_scripts'</span></span><span>] . </span><span><span class="hljs-string">"&lt;/li&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;li&gt;&lt;b&gt;リクエストの総数:&lt;/b&gt; "</span></span><span> . </span><span><span class="hljs-variable">$status</span></span><span>[</span><span><span class="hljs-string">'opcache_statistics'</span></span><span>][</span><span><span class="hljs-string">'num_requests'</span></span><span>] . </span><span><span class="hljs-string">"&lt;/li&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;/ul&gt;"</span></span><span>;
}

<span class="hljs-comment">/**
 * よりフレンドリーなユニットへのフォーマットされたバイト
 */</span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">formatBytes</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$bytes</span></span></span><span>) {
    </span><span><span class="hljs-variable">$units</span></span><span> = [</span><span><span class="hljs-string">'B'</span></span><span>, </span><span><span class="hljs-string">'KB'</span></span><span>, </span><span><span class="hljs-string">'MB'</span></span><span>, </span><span><span class="hljs-string">'GB'</span></span><span>];
    </span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
    </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$bytes</span></span><span> &gt;= </span><span><span class="hljs-number">1024</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-title function_ invoke__">count</span></span><span>(</span><span><span class="hljs-variable">$units</span></span><span>) - </span><span><span class="hljs-number">1</span></span><span>) {
        </span><span><span class="hljs-variable">$bytes</span></span><span> /= </span><span><span class="hljs-number">1024</span></span><span>;
        </span><span><span class="hljs-variable">$i</span></span><span>++;
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-variable">$bytes</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>) . </span><span><span class="hljs-string">' '</span></span><span> . </span><span><span class="hljs-variable">$units</span></span><span>[</span><span><span class="hljs-variable">$i</span></span><span>];
}

<span class="hljs-comment">/**
 * 计算キャッシュヒット率,単位パーセンテージ
 */</span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">calculateHitRate</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$status</span></span></span><span>) {
    </span><span><span class="hljs-variable">$hits</span></span><span> = </span><span><span class="hljs-variable">$status</span></span><span>[</span><span><span class="hljs-string">'opcache_statistics'</span></span><span>][</span><span><span class="hljs-string">'hits'</span></span><span>] ?? </span><span><span class="hljs-number">0</span></span><span>;
    </span><span><span class="hljs-variable">$misses</span></span><span> = </span><span><span class="hljs-variable">$status</span></span><span>[</span><span><span class="hljs-string">'opcache_statistics'</span></span><span>][</span><span><span class="hljs-string">'misses'</span></span><span>] ?? </span><span><span class="hljs-number">0</span></span><span>;
    </span><span><span class="hljs-variable">$requests</span></span><span> = </span><span><span class="hljs-variable">$hits</span></span><span> + </span><span><span class="hljs-variable">$misses</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$requests</span></span><span> === </span><span><span class="hljs-number">0</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-number">0</span></span><span>;
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">round</span></span><span>((</span><span><span class="hljs-variable">$hits</span></span><span> / </span><span><span class="hljs-variable">$requests</span></span><span>) * </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
}

</span><span><span class="hljs-comment">// 関数を呼び出してステータスを表示します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">showOpcacheStatus</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>