PHP が動的表示のために MYSQL を読み取る場合、トラフィックが大きい場合に多くのパフォーマンスの問題が発生することがわかっています。他人の仮想ホストを借りると、過度の CPU 消費により CPU が制限され、Web ページにアクセスできなくなります。ここでは、サーバーの CPU 負荷を大幅に軽減できる、PHP で HTML を動的に生成する方法を紹介します。
まず、動的に呼び出されるパラメータを静的 HTML URL アドレスに変換するように .htaccess ファイルを設定します。たとえば、post ディレクトリ内のファイルをルート ディレクトリの wp-post.php ファイルに転送します。
のようなステートメントを追加します。
RewriteRule ^post/([a-z0-9-]+.html)$ wp-post.php?$1$2
次に、wp-post.php ファイルを変更し、ファイルの先頭に次の PHP コードを追加します。 :
ob_start(); $qstring = isset($_SERVER[%26quot;QUERY_STRING%26quot;]) ? $_SERVER[%26quot;QUERY_STRING%26quot;] : %26quot;%26quot;; define(%26quot;HTML_FILE%26quot;, $_SERVER['DOCUMENT_ROOT'].%26quot;/post/%26quot;.$qstring); if (file_exists(HTML_FILE)) { $lcft = filemtime(HTML_FILE); if (($lcft + 3600) %26gt; time()) //判断上次生成HTML文件是否超过1小时,若没有才直接输出文件内容 { echo(file_get_contents(HTML_FILE)); exit(0); } }
次は既存の PHP コードで、現在のコードの最後に次の PHP コードを追加します:
define(%26quot;HTMLMETA%26quot;,%26quot;%26lt;!-- this is a real static html file created at %26quot;.date(%26quot;Y-m-d H:i:s%26quot;).%26quot; --%26gt;%26quot;); $buffer = ob_get_flush(); $fp = fopen(HTML_FILE, %26quot;w%26quot;); if ($fp) { fwrite($fp, $buffer.HTMLMETA); fclose($fp); }
それでは静的 HTML ページを確認してください ページの最後にコメント行が表示されている場合は、これは、静的 HTML ファイルが正常に作成されたことを意味します。
この方法の応用例の 1 つが、以前に作成した WordPress 年次ブログ統計プラグインです。この統計プラグインはデータベースに 10 回以上クエリを実行するため、多くの人がアクセスするとパフォーマンスに大きな問題が発生します。この動的 HTML 生成テクノロジを使用すると、1 日に 1 回クエリを実行して統計的なランキングを生成できるため、データベースのクエリのパフォーマンスの問題が完全に解決されます。
静的 HTML Web ページと関連記事を動的に生成するためのより一般的な PHP コードについては、PHP 中国語 Web サイトに注目してください。