ホームページ  >  記事  >  バックエンド開発  >  PHPコード最適化の知識共有

PHPコード最適化の知識共有

小云云
小云云オリジナル
2018-03-05 14:00:311275ブラウズ

この記事では、主に php コードの最適化に関する知識を 40 以上まとめて紹介しますので、皆様のお役に立てれば幸いです。

1. 変数をコピーするだけではありません

BAD:
$description = $_POST['description'];
echo $description;
GOOD:
echo $_POST['description'];

2. 文字列には一重引用符を使用します
3. if/else の代わりに switch/case を使用します
4. Web ページの閲覧速度を向上させるには、Apache の mod_deflate モジュールをオンにします。
5. データベース接続は使用が終了したら閉じる必要があり、長時間の接続は使用しないでください。
PHP 生成を最適化する
1. メソッドを静的として宣言すると、速度が 1/4 向上します。2. echo には戻り値がなく、print は戻り値を返すためです。整数;
3. ループ内ではなく、ループの前に最大ループ数を設定します。代わりに foreach を使用するのが最善です。4. 変数、特に大きな配列を解放します。5. __get、__set、__autoload などの Magic メソッドを使用する
6. require_once()、include_once() はより多くのリソースを消費し、require() は実行効率が高くなります。パスを分析する 時間がかかりません;
8. sexinsex からスクリプトの実行までの時間を知る必要がある場合は、time() よりも $_SERVER['REQUSET_TIME'] の方が適しています;
9. 文字処理関数を使用できる場合は、試してみてください。通常よりも高速です;
10.str_replace 文字置換は通常の置換 preg_replace より高速ですが、strtr は str_replace より 1/4 高速です;
11. 関数が配列と単純な文字の両方をパラメータとして受け入れることができる場合、次のようになります。文字置換として使用し、パラメータ リストが長すぎないように、検索および置換パラメータとして配列を受け入れる代わりに、一度に 1 文字だけを置換する、より簡潔な置換ステートメントを使用することを検討できます。大きなことは小さく、1+1>2;
12. @ を使用してエラーを隠すと、スクリプトの実行速度が低下します。
13.$row['id'] は $row[id] より 7 倍高速です。配列キーと引用符を使用することをお勧めします。
14. ループ内で関数を使用しないでください。たとえば、For($x=0; $x < count)。 ($array); $x)、count() 関数は最初に計算します。*
16. メソッド内でローカル変数を作成するのが最も速く、97xxoo はメソッド内でローカル変数を呼び出すのとほぼ同じくらい高速です。
17.変数の作成はローカル変数よりも 2 倍遅くなります。
18. ($this->prop++) などのオブジェクトのプロパティ (クラス内の変数) の作成はローカル変数よりも 3 倍遅くなります。
19.初期化されたローカル変数よりも -10 倍遅い;
20 。どの関数でも使用されていないグローバル変数を宣言すると、パフォーマンスも低下します (同じ数のローカル変数を宣言する場合と同じように、PHP ではグローバル変数が存在するかどうかを確認する場合があります)。 ;
21. メソッドのパフォーマンスはクラス内と同じです テスト対象のクラスに 10 個以上のメソッドを追加してもパフォーマンスに違いはないため、定義されたメソッドの数は関係ありません。テストメソッド);
22. サブクラス内のメソッドのパフォーマンスは、クラス内の基本クラスよりも優れています。
23. パラメーターを 1 つだけ呼び出し、関数本体が空の関数は、実行に 7 ~ 8 回の $localvar++ 操作を必要とします。同様のメソッド (クラス内の関数) は、実行に約 15 回の $localvar++ 操作を必要とします
24。文字列を定義する場合は、二重引用符よりも単一引用符を使用した方が高速です。 。注: これはエコーでのみ機能します。
26. Apache サーバーでは、PHP スクリプト ページの生成には、対応する HTML 静的ページよりも少なくとも 2 ~ 10 倍の時間がかかります。いくつかの静的 HTML ページといくつかのスクリプトを使用します
27. キャッシュがインストールされていない限り、アクセスされるたびに php スクリプトを再コンパイルする必要があります。 PHP キャッシュ プログラムをインストールすることをお勧めします。これにより、繰り返しのコンパイルが削除され、パフォーマンスが 20 ~ 100% 向上します。
28.動的ネットワーク アプリケーションのパフォーマンスを向上させ、データベースの負荷を軽減します。
29. ip2long() 関数と long2ip() 関数を使用して、IP アドレスを文字ではなく整数に変換し、データベースに保存します。これにより、保管スペースが約 1/4 に削減されます。同時に、アドレスを素早く並べ替えて検索することができます。
30. checkdnsrr() を使用して、ドメイン名の存在を通じて一部の電子メール アドレスの有効性を確認し、各ドメイン名が IP に対応していることを確認します。アドレス;
31. php5 および mysql4.1 以降を使用している場合は、mysql_* の改良された関数の使用を検討してください。 Before プロジェクトを完全にやり直して、PEAR に必要なものがあるかどうかを確認してください。多くの PHP 開発者が知っているように、PEAR は巨大なリソース ライブラリです。
34. ページのソース コードの適切な形式のコピーを自動的に出力するには、error_reporting(0) 関数を使用します。がユーザーに表示されます。理想的には、php.ini ファイルでエラー報告を完全に無効にする必要があります。ただし、共有仮想ホストを使用していて php.ini を変更できない場合は、error_reporting(0) 関数を追加して各スクリプト ファイルの最初の行に配置することをお勧めします (または、require_once() を使用してそれをロードします)。 . エラーが発生したときに、機密性の高い SQL クエリとパスが表示されないように効果的に保護できます。
36. データベースを保存 (取得) するときに、gzcompress() と gzuncompress() を使用します。この組み込み関数は、gzip アルゴリズムを使用して 90% に圧縮できます。
37. 関数はパラメーター変数アドレスを参照することで複数の戻り値を持つことができます。変数の前に「&」を追加して、値ではなくアドレスで渡すことを示すことができます。
38.「マジック クオート」と SQL インジェクションの危険性を十分に理解する これを読んでいるほとんどの開発者が SQL インジェクションについてすでによく知っていることを願っています。
ただし、まだ理解したことがない場合は、これを理解することが絶対に重要であるため、ここに記載します。 39. strlen() を使用すると、小文字クエリやハッシュ テーブル クエリなどの他の操作を呼び出す必要があるため、あまり高速ではありません。 isset() を使用できます。同様の関数の場合、 isset() は strlen(); よりも高速です。 $i++ のインクリメントまたは $i-- のデクリメントに関しては、 ++$i または --$i よりもわずかに遅くなります。 PHP は他の言語には適していません
42。foreach ループは while または for * を置き換えます。大きなファイルには file_get_contents()、小さなファイルには fopen()、fread() を使用します
44。クラス
オペコードを表示するための VLD ツール
Xdebug PHP プログラム デバッガーは、PHP プログラムの実行ステータスを追跡、デバッグ、分析するために使用されます
WinCacheGrind デバッグ ツールは、PHP 呼び出しの回数や時間を表示するなどします


関連する推奨事項:

phpコードの最適化: php foreachとforの速度比較テストの例

PHPコードの最適化の概要

PHPコードの最適化とPHP関連の問題の概要

以上がPHPコード最適化の知識共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。