ホームページ バックエンド開発 PHPチュートリアル PHP の最適化について簡単に説明します

PHP の最適化について簡単に説明します

Jun 13, 2016 pm 12:10 PM
key memcached php

PHP の最適化について簡単に説明しましょう

プログラムを作成するとき、私たちは常に、プログラムの使用リソースを最小限に抑え、より高速に実行し、より少ないコードを作成したいと考えます。これらを追求している間に、私たちは多くのものを失うことがよくあります。次に、PHP の最適化についての私の理解を話したいと思います。最適化の目的は、最速の実行速度と最も簡単なコードの保守と引き換えに、最小限のコストを費やすことです。

特定のプログラム コードをいじるのではなく、大規模な最適化を実行します

ここで話している最適化は、基本的にサーバー、Apache、データベースなどからのものです。最適化は、プログラムの実行速度を向上させるために PHP コードを改善するのではなく、側面に基づいています。これは、プログラムの速度を向上させるためにプログラム内の正規表現を文字列処理関数に最適化するのと比較して、最適化が実行されるためです。大規模な最適化のコストはこれよりはるかに小さくなりますが、その見返りははるかに豊富です。

非コード領域の最適化には次の利点があります。

1. 通常、効率を大幅に向上できます

2. 危険にさらさないコードの整合性

3. 迅速な展開能力

キャッシュテクノロジー

以下で説明します一般的に使用されるキャッシュ テクノロジは、これらのキャッシュ テクノロジによって効率を大幅に向上させることができます。

キャッシュ テクノロジについて話すとき、Memcached について言及する必要があります。Memcached は、主に WEB 動的アプリケーションの高速化に使用されます。 。

Memcached の原理

Memcached は 1 つ以上のサーバーでデーモンとして実行され、クライアントからの接続操作の受信を待機します。クライアントはさまざまな言語で記述できます (例: PHP)。 PHP などのクライアントが memcached サービスとの接続を確立したら、次にアクセスするオブジェクトには一意の識別子キーがあり、アクセス操作は memcached に保存されます。 、キャッシュ ファイルに保存されないため、memcached は非常に効率的かつ高速になります。

memcached について説明した後、一般的に使用される キャッシュ方法について説明します。

1. コンパイルと OPCODE キャッシュ

PHP インタープリタ型言語であるため、実行時に各 PHP ファイルをコンパイルして実行する必要があります。同じファイルに異なるユーザーがアクセスする場合、または同じユーザーが異なる時間に同じファイルにアクセスする場合は、再コンパイルして実行する必要があります。毎回、かなりの時間がかかります。

コンパイルとキャッシュにより、各ファイルは変更後に 1 回だけコンパイルされるため、ユーザーがアクセスした後、機械語命令はハードディスクから読み取られるのではなく、メモリから直接フェッチされて実行されます。 。

最も一般的な PHP コンパイル キャッシュ ツールは、APC、Accelerator、xcache

2. グローバル ページ キャッシュ – Squid Cache

Squid) です。人気のフリー ソフトウェア (GNU General Public License) プロキシ サーバーと Web キャッシュ サーバーは、Web サーバーのフロントエンド キャッシュ サーバーとして機能し、関連するリクエストをキャッシュすることで Web サーバーの速度を向上させます。

3. SQL キャッシュのローカル キャッシュ

ほとんどのアプリケーションでは、主なボトルネックは多くの場合データベースの操作に遡ります。これは通常、データベースが複雑であることが原因です。クエリには多くの時間がかかりますが、SQL キャッシュにより、複雑なクエリによって生じる負荷を大幅に軽減できます。

SQL キャッシュの例 (memcached 拡張機能を使用)

コード スニペット:

$key = md5("some sort of SQL query");

if (!($result = memcache_get($key))) {

$result = $pdo->query($qry)->fetchAll();

// キャッシュクエリ1 時間の結果

memcache_set($key, $result, NULL, 3600);

}

4. ローカル キャッシュ コード ブロック キャッシュ

PHP プログラムを最適化するために、実行時間を少し短縮するために各コード セグメントを最適化する必要がある場合がありますが、さまざまな複雑な PHP コード セグメントを最適化する代わりに、キャッシュを通じてそれらを直接無視する方が良いです。これらのコードセグメントの最適化は次のとおりです。

1. 効果をすぐに確認できます

2. 以前のコードは破壊されません

3. コードを最適化するよりもはるかに高速

コード ブロック キャッシュの例 (memcached 拡張機能も使用)

コード スニペット:

Function complex_function_abc($a, $b, $c) {

$key = __FUNCTION__ .serialize

(func_get_args());

if (!($result = memcache_get($key))) {

$result = //ファンクションコード

//1時間の実行結果を保存

memcache_set($key, $result, NULL , 3600);

}

return $result;

}

もちろん上記のメソッド以外にも、ファイル キャッシュ (データベースからデータを取得してファイルに保存する) を使用すると、静的 HTML ファイルなどを生成することもできます。ただし、これらのメソッドのキャッシュでも、ファイルはメモリではなくハード ディスクに保存されます。

出力制御

上記のキャッシュ技術に加えて、出力制御を使用してプログラムの実行時間を短縮することもできます

PHP と APACHE による出力について話しましょうコントロール

1. PHP 出力コントロール

ここでは主に PHP の ob_start() と OB シリーズの関数を使用します。これらの関数は何ができるのでしょうか?

1 つ目は静的テンプレート技術です。いわゆる静的テンプレート技術は、特定のメソッドを使用して、ユーザーがクライアント側の PHP によって生成された HTML ページを取得できるようにします。この HTML ページが更新されなくなると、別のユーザーがこのページを再度閲覧したときに、sina、163、sohu などの大量の情報を含む一部の Web サイトでは、プログラムが PHP および関連データベースを呼び出すことはなくなります。このようなテクノロジーの恩恵は非常に大きいです。

コード例:

ob_start(); //バッファを開く

?>

php すべてページの出力

$content = ob_get_contents() //PHP ページのすべてのコンテンツを取得します。output

$fp = fopen(” Output.html", "w"); //ファイルを作成して開き、書き込みの準備をします。

fwrite($fp, $content); //php ページのすべてのコンテンツを出力します。 html、そして……

fclose($fp);

?>

もちろん、この ob シリーズ関数には他にも多くの用途がありますが、説明は省略します。ここで一つずつ。

2. Apache 出力制御

SendBufferSize をページ サイズに設定すると、ページが一度に送信バッファーに配置され、処理速度が向上します。

SendBufferSize コマンド

説明: TCP 送信バッファ サイズ (バイト)

構文: SendBufferSize バイト

デフォルト値: SendBufferSize 0

スコープ:server config

ステータス:MPM

モジュール:beos、mpm_netware、mpm_winnt、mpmt_os2、prefork、worker

このコマンドは、サーバーの TCP 送信バッファ サイズ (バイト) を設定します。 。この値を増やすと、高速化と遅延 (約 100ms) という 2 つの影響が生じます。 「0」に設定すると、オペレーティング システムのデフォルトが使用されます。

ソース コードを通じて Apache/PHP/データベースをコンパイルすると、プログラムの速度が 10 ~ 15% 向上します

次に、コードを最適化するときに注意すべき点について説明します

1. 短いコードは速いコードと同じではありません

プログラムを書くとき、多くの人はできるだけ簡潔にコードを書きたいと考えますが、コードが短いほど、より多くのコードが必要になることがあります。実行時間が長いため、より多くのコードを使用する場合でも、遅いコードは使用しないでください

2. プログラムを作成するときは、追求するのではなく、プログラムのスケーラビリティにもっと注意を払う必要があります。速度

3. コードを最適化する前に、まずデータベース関連の部分を確認します。ほとんどのアプリケーションのボトルネックはコードではなくデータベースであるためです

4. マイクロ最適化にはメリットがありません

マイクロ最適化とは何ですか? 前述したように、コードの正規表現部分を文字列関数に置き換えます。これには次のような欠点があります。

(1) 時間がかかります

(2) パフォーマンスの問題は解決されません

(3) 問題が発生する可能性が非常に高いです前のものを破棄する コードにより不明なエラーが発生します

(4) 努力は報酬を超えます

プログラムをより最適化するために、ここで言及しなければならない誤解もあります。ビジネス ロジックを分析するときに最適化を考慮して、より良いコードを取得するためにビジネス ロジックを変更する人もいます。プログラムの目的は現実に遭遇する問題を解決し、それらの問題に対処することであるため、これは非常に愚かなアイデアです。

1階upsun
ブロガーの書いた記事は素晴らしいので、今後よく読みます。私も現在 php を学んでいるので、皆さんから学びたいと思っています
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

See all articles