ホームページ バックエンド開発 PHPチュートリアル PHP の専門家が役立つ情報を共有します: 必読の 50 の詳細 [PHP トレーニング チュートリアル]

PHP の専門家が役立つ情報を共有します: 必読の 50 の詳細 [PHP トレーニング チュートリアル]

Nov 07, 2016 pm 05:24 PM

兄弟が PHP マスター向けに役立つ情報を共有します: 必読の 50 の詳細

1. 文字列を含めるには二重引用符の代わりに一重引用符を使用すると高速になります。 PHP は二重引用符で囲まれた文字列内の変数を検索しますが、一重引用符は検索しません。 注: これを実行できるのは echo だけです。これは複数の文字列をパラメータとして受け取ることができる「関数」です (注釈: PHP マニュアル echo は実際の関数ではなく言語構造であるため、関数は二重引用符で囲まれています)。

2. クラスメソッドを静的に定義できる場合は、クラスメソッドを静的に定義してみると、速度が 4 倍近く向上します。

3. $row[‘id’] の速度は $row[id] の 7 倍です。

4. Echo は print より高速で、echo $str1、$str2 などの文字列連結の代わりに echo の複数のパラメータ (注釈: ピリオドの代わりにカンマを使用することを指します) を使用します。

5. forループを実行する前に最大ループ数を決定する ループごとに最大値を計算するのではなく、代わりにforeachを使用するのが最善です。

6. 未使用の変数、特に大きな配列の登録を解除して、メモリを解放します。

7. __​​get、__set、__autoload の使用は避けるようにしてください。

8. require_once() は高価です。

9. ファイルをインクルードするときは、絶対パスを使用するようにしてください。これにより、include_path 内のファイルを検索する PHP の速度が低下し、オペレーティング システムのパスの解析に必要な時間が短縮されるからです。

10. スクリプトの実行開始時刻(注釈: サーバーがクライアントリクエストを受信する)を知りたい場合は、time() よりも $_SERVER['REQUEST_TIME'] を使用する方が良いです

11. 関数は正規表現を次のように置き換えます。同じことを達成する機能。

12. str_replace 関数は preg_replace 関数よりも高速ですが、strtr 関数は str_replace 関数よりも 4 倍効率的です。

13. 文字列置換関数がパラメータとして配列または文字を受け入れることができ、パラメータの長さが長すぎない場合は、単に 1 行の文字列を記述する代わりに、渡される各パラメータが文字になるように追加の置換コードを記述することを検討できます。コードはクエリと置換のパラメータとして配列を受け入れます。

14. 複数の if、else if ステートメントを使用するよりも、選択的分岐ステートメント (翻訳アノテーション: switch case) を使用する方が良いです。

15. @を使用してエラーメッセージをブロックするのは非常に非効率的で、極めて非効率的です。

16. Webページの閲覧速度を向上させるには、Apacheのmod_deflateモジュールをオンにします。

17. データベース接続は使い終わったら閉じる必要があり、長時間の接続は使用しないでください。

18. エラーメッセージは高価です。

19. メソッド内でローカル変数を増やすのが一番早い。関数内でローカル変数を呼び出すのとほぼ同じ速度です。

20. グローバル変数のインクリメントは、ローカル変数のインクリメントより 2 倍遅くなります。

21. オブジェクトのプロパティ ($this->prop++ など) をインクリメントするのは、ローカル変数をインクリメントするより 3 倍遅くなります。

22. 未定義のローカル変数をインクリメントするのは、事前定義されたローカル変数をインクリメントするよりも 9 ~ 10 倍遅くなります。

23. 関数内で呼び出さずにローカル変数を定義するだけでも(ローカル変数をインクリメントするのと同じ程度に)速度が遅くなります。 PHP はおそらく、グローバル変数が存在するかどうかを確認します。

24. 10個のメソッドを追加したため(メソッドのテスト前とテスト後の両方)、メソッド呼び出しはクラスに定義されているメソッドの数に依存していないように見えますが、パフォーマンスに変化はありませんでした。

25. 派生クラスのメソッドは、基本クラスで定義された同じメソッドよりも高速に実行されます。

26. パラメータを 1 つ指定して空の関数を呼び出すと、ローカル変数のインクリメント演算を 7 ~ 8 回実行するのと同じ時間がかかります。同様のメソッド呼び出しには、15 近くのローカル変数の増分が必要です。

27. Apache が PHP スクリプトを解析する時間は、静的な HTML ページを解析するより 2 ~ 10 倍遅くなります。使用する静的な HTML ページを増やし、スクリプトを減らすようにしてください。

28. スクリプトをキャッシュできない限り、呼び出されるたびに再コンパイルされます。 PHP キャッシュ メカニズムを導入すると、通常、コンパイルのオーバーヘッドが排除され、パフォーマンスが 25% ~ 100% 向上します。

29. できるだけキャッシュするようにしてください。memcached を使用できます。 Memcached は、動的 Web アプリケーションを高速化し、データベースの負荷を軽減するために使用できる高性能メモリ オブジェクト キャッシュ システムです。 OP コードのキャッシュは、リクエストごとにスクリプトを再コンパイルする必要がないように便利です。

30. 文字列を操作し、その長さが特定の要件を満たしているかどうかを確認する必要がある場合、当然 strlen() 関数を使用することになります。この関数は計算を行わず、zval 構造体 (PHP 変数の格納に使用される C の組み込みデータ構造体) に格納されている既知の文字列長を返すだけなので、非常に高速に実行されます。ただし、 strlen() は関数であるため、関数呼び出しは小文字などの多くの手順を経るため、多少遅くなります (注釈: 小文字の関数名を指します。PHP は大文字と小文字の関数名を区別しません)。 )、ハッシュ検索、呼び出された関数と一緒に実行されます。場合によっては、 isset() トリックを使用してコードの実行を高速化できます。

(例は以下の通り)

if (strlen($foo)
(以下の手法と比較してください)

if (!isset($foo{5})) { echo “Foo is too short”$$ }

isset() の呼び出しはたまたまstrlen() より速いのは、後者とは異なり isset() が言語構造体であるためです。つまり、その実行には関数の検索や小文字の文字、つまり実際に文字列の長さをチェックするトップレベルのコードが必要ありません。オーバーヘッドをあまりかけません

31. 変数 $i のインクリメントまたはデクリメントを実行する場合、$i++ は ++$i よりも遅くなります。この違いは PHP に固有のものであり、他の言語には当てはまりません。 C または Java コードを変更して、すぐに高速になることを期待しないでください。++$i は 3 つの命令 (オペコード) しか必要としないため、高速には動作しません。$i++ は、ポストインクリメントに 4 つの命令を必要とします。変数が実際に作成され、元の値が増分されます。これは、Zend の PHP オプティマイザーが行うのと同じような一種の最適化です。すべてのコマンド オプティマイザーが同じ最適化を行うわけではなく、多数の最適化が行われるためです。コマンド オプティマイザーを備えていないインターネット サービス プロバイダー (ISP) とサーバーの

32. 必ずしもオブジェクト指向 (OOP) であるとは限りませんが、オブジェクト指向は多くの場合非常に高価であり、各メソッドとオブジェクトの呼び出しは大量のコストを消費します。メモリ。

33. すべてのデータ構造を実装するためにクラスを使用する必要はありません。 34. メソッドをあまり細分化しないでください。 35. 必要に応じていつでもコードをメソッドに分割できます

36. 多数の PHP 組み込み関数を使用してみてください

37. コードには時間のかかる関数がたくさんあります。 38. コードをプロファイリングします。チェッカーは、コードのどの部分のデバッグにどれくらいの時間がかかるかを示します。コンパイラーには検証プログラムが含まれており、コードのボトルネックを示すことができます。

39. mod_zip を Apache モジュールとして使用すると、データを瞬時に圧縮し、データ転送量を 80% 削減できます 40. file、fopen、feof、fgets などの一連のメソッドの代わりに file_get_contents を使用できる場合、 file_get_contents を使用する方が効率的です。ただし、URL ファイルを開くときは、file_get_contents の PHP バージョンの問題に注意してください。

41. PHP のファイル操作効率は低くありませんが、ファイル操作の実行を減らすようにしてください。 . Select SQL ステートメントを最適化し、できるだけ少ない Insert 操作と Update 操作を実行します (更新に関して批判を受けています)

43. 可能な限り PHP の内部関数を使用します (ただし、PHP に存在しない関数を見つけるため)。 PHP、カスタム関数を書くことができた時間を無駄にしました、経験の問題です!)

44. ループ 変数、特に大きな変数を内部で宣言しないでください (これは PHP だけの問題ではないようです、そうですよね) ?); 45. 多次元配列でネストされた代入をループしないようにしてください。 46. PHP の内部文字列を使用できます。 関数を操作するときは、正規表現を使用しないでください。 47. foreach の代わりに foreach を使用してください。 while ループと for ループ

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

49. i=i+1 を " i+=1 で置き換えます。 C/C++ の習慣に準拠しており、非常に効率的です。」

50. グローバル変数については、使用後に unset() する必要があります

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

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における後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

See all articles