PHPプログラムの最適化

WBOY
リリース: 2016-08-08 09:28:39
オリジナル
967 人が閲覧しました

PHP プログラムの最適化

PHP プログラムの最適化には、PHP コードの最適化、セッション メカニズムの最適化、キャッシュ ミドルウェアの使用、および PHP コード キャッシュ システム (主に APC アクセラレーション) に焦点を当てた多くの内容があります。

そして、十分なスキルを習得するために習得されたすべてのスキルを十分に習得しました。PHPコードを最適化してPHPコードを最適化できます。プログラムのコーディング作業が完了したら、通常、上級プログラマーにコードをレビューしてもらい、プログラムの品質を評価し、最適化が必要な点を特定します。このプロセスはコード レビューとも呼ばれます。以下では、いくつかの一般的な PHP プログラミング手法と、コード レビュー プロセスに関係する可能性のあるいくつかの最適化原則を紹介します。

1. 最新の PHP バージョンにアップグレードします

プログラミング言語自体は常に進化しており、言語の新しいバージョンには通常、言語自体のバグ修正とパフォーマンスの最適化が含まれていることを知っておく必要があります。したがって、専門家として、PHP については、公式 Web サイト http://php.net/ から必要な情報を入手することができ、新しいバージョンの出現に定期的に注意を払う必要があります。

2. include と require を減らす

PHP 自体はこの問題に対して特定の最適化を行っていますが、頻繁に使用するとパフォーマンスの低下を引き起こす可能性があります。このプロセスは、APC アクセラレータ コンポーネントをインストールすることで軽減できます。

3. グローバル変数の代わりにローカル変数を使用します

ローカル変数は最も高速であり、特に一部のループ ロジックでは、ローカル変数を使用して可能な限り操作を実行します。なぜグローバル変数が使われないのかというと、運用効率の問題がある一方で、グローバル変数は管理が容易ではないという理由があります。 静 4. 静的な関数やメソッドを使用してみます。関数やメソッドを静的なものとして定義しようとする場合、つまり静的なタグを追加すると、プログラムの実行速度が数倍向上する可能性があります。

5. 未使用の変数やリソースを解放する

PHP のメモリリサイクルメカニズムにあまり依存しないでください。プログラム内の一部の未使用の変数やリソースは、unset メソッドを使用するか、直接削除する必要があります。 . null に設定します。さらに、データベース接続など、コンポーネントに関連する他のリソースに遭遇した場合には、特別な注意を払う必要があります。

6. 文字列を含めるには二重引用符の代わりに一重引用符を使用します

PHP では、二重引用符を使用すると追加の文字エスケープや変数解析ロジックが発生する可能性があるため、通常、文字列は一重引用符で囲まれます。二重引用符よりも高くなります。

7. @ 記号を使用してエラーをシールドすると、スクリプトの実行速度が遅くなります

8. PHP の OOP を使いすぎないでください

コードをより適切に管理するために、大規模な PHP プログラムはプログラム フレームワークを構築するためにオブジェクト指向思考 (OOP) を使用する傾向がありますが、オブジェクトは通常より多くのメモリを消費するためです。 、クラス ライブラリが多すぎると、大量の include 操作と require 操作が生成され、追加のオーバーヘッドが発生する可能性があります。したがって、実際の状況に応じて OOP のアイデアを合理的に使用する必要があります。この問題は、APC アクセラレーション コンポーネントを使用して軽減することもできます。

9. インターフェイスの代わりに抽象クラスを使用する

PHP でインターフェイスを使用するとコストが非常に高くなるため、プログラミング時にはインターフェイスの使用を避けるようにしてください。通常、同様のロジックのカプセル化の代わりに抽象クラスを使用できます。

10. 正規表現の使用はコストがかかります

PHP 言語の正規表現機能は非常に強力ですが、実行コストも高いことを知っておく必要があります。可能な場合は、PHP の文字処理を使用する必要があります。代わりに可能な機能。

11. 保存する必要があるデータを可能な限り圧縮します

データのストレージはシステムのスペースリソースを占有する必要があるため、スペースリソースを節約するためにデータを可能な限り圧縮する必要がありますシステムの。たとえば、IP アドレスを保存する場合、ip2long 関数を使用して IP アドレスを整数データに変換して保存し、long2ip 関数を通じてそれを復元できます。さらに、gzcompress と gzuncompress を使用して、一部のビッグ データを圧縮および解凍することもできます。

12. より効率的なステートメントを使用する

PHP プログラミング ステートメントの効率も異なります。今後コードを記述する際には、より重要なステートメントを比較する必要があります。

  • 分岐ステートメント内の switch...case の効率は if...elseif...else よりも高いです
  • ループ ステートメント内の foreach の効率が最も高く、次に for、while が最も低くなります
  • オーバーレイステートメントでは ++$i(Prefix) の方が $i++(suffix) よりも高速です

13. より効率的な関数を使用します

PHP には非常に豊富な関数ライブラリがあり、同じ関数を以下を使用して完成させることができますさまざまな機能。ただし、機能によって動作効率も異なりますので、よく使用する機能を比較してみましょう。

  • 文字印刷関数 echo は print より高速です
  • 文字置換関数 strtr が最も効率的、str_replace 次に、prea_replace が最低の定期置換です
  • 配列クエリ関数 array_key_exists が最速で、inset 次に、in_array が最低です
  • リモートネットワークファイルcUrlの取得効率と操作性と柔軟性が最も高く、fsockopen、file_get_contents、fopenが最も低い

ただし、ロジックがあまり複雑でない一部のプログラムでは、各コードの効果が最適化はあまり明らかではないかもしれませんが、良いプログラミングの習慣を身につけることが非常に重要であり、それが普通のプログラマーと上級プログラマーの違いでもあります。上記がすべてのPHPプログラミングスキルではなく、これらのスキルの習得は一朝一夕で完了するものではなく、学習と実践の過程で継続的にまとめ、蓄積することで初めてプログラミング能力を向上させることができます。次のレベルへ。

PHP に最適化されたセッションメカニズム

簡単に言えば、Session は各ユーザーに付属するグローバル変数のようなもので、ユーザーがサーバーに保存する必要がある情報を保存するために使用されます。実際、Session セッションの機能はシステム設定ファイル php.ini で設定できます。もちろん、ini_set 関数 (設定を取得するための ini_get) を使用してプログラム的に設定することもできます。

auto_start (session.auto_start: 自動的に有効にするかどうか) を有効にすることは、通常は推奨されません。セッションの作成にはシステム リソースが必要になるためです。通常は、必要な場合に session_start 関数を使用してセッション関数を有効にするだけです。セッションを使用します。次に、セッションの有効期間はシステムの状況に応じて決定する必要があります。長すぎる場合は、セッション データが多すぎるために負荷の問題が発生する可能性があり、短すぎる場合は、セッションの作成が頻繁すぎるため、パフォーマンスの問題が発生する可能性もあります。システムのデフォルトの有効時間は 1440 秒、つまり 24 分です。実際のプロジェクトでは、通常、この時間を 1 ~ 8 時間に設定します。 PHP についても注意してください Session で使用されるデフォルトの保存方法は、php.ini で session.save_handle 選択行を通じて必要な保存方法を選択できますが、実際にはファイル保存方法の使用は比較的非効率であり、システム アーキテクチャの拡張には役立ちません。プロジェクトでは、セッション コールバック インターフェイスは、セッションのロジックを制御するために session_set_save_handler メソッドを通じて設定されることがよくあります。これには、データベース、分散キャッシュ サーバーなどが含まれます。

PHP セッション最適化のアイデア。まず、セッションが作成されるたびにリソースが消費されます。グローバル設定ファイルで session_start メソッドを使用しないでください。次に、サーバーがセッション ID を取得できない場合は、新しいセッション ID を作成するため、すべてのセッション要求で必ずセッション ID を取得する必要があります。さらに、ストレージ方法を選択するときは、キャッシュ サーバー Memcache(d)、Redis などの高速ストレージ メディアを使用するようにしてください。

キャッシュミドルウェアの使用

キャッシュミドルウェアの出現は、クエリ要件のほとんどを処理するためにデータベースを置き換えてクエリされた情報をサーバーメモリにキャッシュし、それによってデータ負荷を軽減することです。プレッシャー。現在、業界でよく使われているキャッシュミドルウェアはMemcacheとRedisです(環境構築や使い方、両者の違いについてはネットワークリソースを検索していただくとして、ここでは詳しく紹介しません)。実際のプロジェクトで使用される効果に応じて、キャッシュ ミドルウェアは通常、サーバーのクエリ速度を大幅に向上させることができます。さらに、Redis キャッシュは書き込みキューとしても使用できます。つまり、データは最初に Redis キャッシュに書き込まれ、その後データに転送されます。

APC を使用して高速化

ネットワークアプリケーションの継続的な開発に伴い、ロジックコードはますます複雑になり、フレームワークに巨大なクラスライブラリコードを導入することによるリソースの消費も増加していますしたがって、再びオンラインにアクセスすると、比較的高くなります。コードの実行を高速化するために、コードレベルのキャッシュを使用する必要もあります。

APC (代替 PHP キャッシュ、PHP コード キャッシュ システム) は、PHP 中間コード (オペコード) をキャッシュして最適化することで、PHP の実行効率を向上させる、非常に優れた PHP コード キャッシュ ソリューションです。

注: APC と同じレベルの無料の PHP コード キャッシュ テクノロジーには、eAccelerator と XCache が含まれます (インストールと違い: http://blog.csdn.net/mossader/article/details/6343354)

データ送信を最適化する

通信プロトコルの一般的な設計原則の中で、汎用性と間接性が最も重要です。プログラム アプリケーション プロトコルの基礎として JSON プロトコルを選択すること自体がシステムの最適化です。

2. gzip 圧縮を使用します

サーバーからクライアントへのデータのプロセスは複雑なネットワークを通過する必要があるため、ネットワーク送信に影響を与える主な要因が 2 つあります。1 つはネットワーク品質です。 、もう 2 つ。データ自体のサイズ。 HTTP プロトコルの場合、gzip は現在主流の圧縮アルゴリズムの 1 つであり、ほとんどの HTTP サーバーがこの圧縮アルゴリズムをサポートしています (Apche および Nginx 用の gzip 圧縮関数モジュールの構成については、ネットワーク リソースを自分で見つけてください)。

注: この記事は、第 9 章「ベストのサーバー側」からの抜粋です。 Android と PHP の実践開発」の最適化 (削除あり)

以上、PHP プログラムの最適化についてさまざまな側面を含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート