ホームページ バックエンド開発 PHPチュートリアル PHP開発を効率化するためのヒント

PHP開発を効率化するためのヒント

Jul 29, 2016 am 09:12 AM
apache echo php strlen

0. 文字列を含めるには二重引用符の代わりに一重引用符を使用すると高速になります。 PHP は二重引用符で囲まれた文字列内の変数を検索しますが、一重引用符は検索しません。 注: これを実行できるのは echo だけです。これは複数の文字列をパラメータとして受け取ることができる「関数」です (注釈: PHP マニュアル echo は実際の関数ではなく言語構造であるため、関数は二重引用符で囲まれています)。
1. クラスメソッドを静的に定義できる場合は、それを静的に定義してみると、速度が 4 倍近く向上します。
2. $row[’id’] は $row[id] より 7 倍高速です。
3. Echo は print より高速で、echo $str1、$str2 などの文字列連結の代わりに echo の複数のパラメーター (注釈: ピリオドの代わりにカンマを使用することを指します) を使用します。
4. for ループを実行する前に最大ループ数を決定します。ループごとに最大値を計算するのではなく、代わりに foreach を使用することをお勧めします。
5. 未使用の変数、特に大きな配列の登録を解除して、メモリを解放します。
6. __get、__set、__autoload の使用は避けてください。
7. require_once() は高価です。
8. ファイルをインクルードする場合は、絶対パスを使用するようにしてください。これにより、include_path 内のファイルを検索する PHP の速度が低下し、オペレーティング システムのパスの解析に必要な時間が短縮されるためです。
9. スクリプトの実行開始時刻 (注釈: サーバーがクライアント要求を受信する) を知りたい場合は、time() よりも $_SERVER[‘REQUEST_TIME’] を使用する方が適しています。
10. 関数は、同じ関数を完成させるために 正規表現 を置き換えます。
11. str_replace 関数は preg_replace 関数よりも高速ですが、strtr 関数は str_replace 関数よりも 4 倍効率的です。
12. 文字列置換関数 www.100jz.net がパラメータとして配列または文字を受け入れることができ、パラメータの長さが長すぎない場合は、各パラメータが渡されるように追加の置換コードを記述することを検討できます。クエリと置換のパラメータとして配列を受け入れるコードを 1 行記述するだけではなく、1 文字で済みます。
13. 複数の if、else if ステートメントを使用するよりも、選択的分岐ステートメント (翻訳: switch case) を使用する方が良いです。
14. @ を使用してエラー メッセージをブロックするのは非常に非効率的です。
15. Apacheのmod_deflateモジュールを開き、Webページの閲覧速度を向上させます。
16. データベース接続は、使用が終了したら閉じる必要があります。長い接続は使用しないでください。
17. エラーメッセージは高価です。
18. メソッド内のローカル変数を増やすのが最も速いです。関数内でローカル変数を呼び出すのとほぼ同じ速度です。
19. グローバル変数のインクリメントは、ローカル変数のインクリメントよりも2倍遅くなります。
20. オブジェクト プロパティ ($this->prop++ など) のインクリメントは、ローカル変数のインクリメントより 3 倍遅くなります。
21. 未定義のローカル変数をインクリメントするのは、事前定義されたローカル変数をインクリメントするよりも 9 ~ 10 倍遅くなります。
22. 関数内で呼び出さずにローカル変数を定義するだけでも、(ローカル変数をインクリメントするのと同じ程度に) 速度が低下します。 PHP はおそらく グローバル変数 があるかどうかを確認します。
23. 10 個のメソッドを (メソッドのテスト前とテスト後の両方で) 追加したため、メソッド呼び出しはクラスで定義されたメソッドの数に依存していないように見えますが、パフォーマンスに変化はありませんでした。
24. 派生クラスのメソッドは、基本クラスで定義された同じメソッドよりも高速に実行されます。
25. 1 つのパラメーターを指定して空の関数を呼び出すには、7 ~ 8 回のローカル変数のインクリメント操作を実行するのと同じ時間がかかります。同様のメソッド呼び出しには、15 近くのローカル変数の増分が必要です。
26. ApachePHP スクリプトの解析時間は、静的な HTML ページの解析より 2 ~ 10 倍遅くなります。使用する静的な HTML ページを増やし、スクリプトを減らすようにしてください。
27. スクリプトをキャッシュできない限り、呼び出されるたびに再コンパイルされます。 PHP キャッシュ メカニズムを導入すると、通常、コンパイルのオーバーヘッドが排除され、パフォーマンスが 25% ~ 100% 向上します。
28. できるだけキャッシュするようにしてください。memcached を使用できます。 Memcached は、動的 Web アプリケーションを高速化し、データベースの負荷を軽減するために使用できる高性能メモリ オブジェクト キャッシュ システムです。 OP コードのキャッシュは、リクエストごとにスクリプトを再コンパイルする必要がないように便利です。
29. 文字列を操作し、その長さが特定の要件を満たしているかどうかを確認する必要がある場合は、当然 strlen() 関数を使用します。この関数は計算を行わず、zval 構造体 (PHP 変数の格納に使用される C の組み込みデータ構造体) に格納されている既知の長さの文字列を返すだけなので、非常に高速に実行されます。ただし、 strlen() は関数であるため、関数呼び出しは小文字などの多くの手順を経るため、多少遅くなります (注釈: 小文字の関数名を指します。PHP は大文字と小文字の関数名を区別しません)。 )、ハッシュ検索、呼び出された関数と一緒に実行されます。場合によっては、 isset() を使用できます。 コードの実行を高速化するためのヒント。
(以下の例)
if (strlen($foo) < 5) { echo “Foo is too short”$$ }
(以下のテクニックと比較してください)
if (!isset ( $foo{5})) { echo “Foo は短すぎます”$$ }
isset() の呼び出しは、strlen() よりも高速です。これは、後者とは異なり、isset() が言語構造であるためです。その実行には関数の検索や小文字の文字は必要ありません。つまり、実際には、最上位コードで文字列の長さをチェックするオーバーヘッドはそれほどかかりません。
34. 変数 $i のインクリメントまたはデクリメントを実行する場合、$i++ は ++$i より遅くなります。この違いは PHP に固有のものであり、他の言語には当てはまりません。そのため、C または Java コードを変更して、すぐに高速になることを期待しないでください。実際には機能しません。 ++$i は 3 つの命令 (オペコード) しか必要としないため高速ですが、$i++ は 4 つの命令を必要とします。ポストインクリメントでは、実際には、後でインクリメントされる一時変数が作成されます。プレフィックスの増分は、元の値に直接増加します。これは、Zend の PHP オプティマイザーによって行われるような最適化の一種です。すべてのコマンド オプティマイザーが同じ最適化を行うわけではなく、コマンド オプティマイザーがインストールされていないインターネット サービス プロバイダー (ISP) やサーバーが多数存在するため、この最適化を念頭に置くことをお勧めします。
35. オブジェクト指向(OOP)であるとは限りません。オブジェクト指向は多くの場合非常に高価であり、各メソッドとオブジェクトの呼び出しは大量のメモリを消費します。
36. すべてのデータ構造を実装するためにクラスを使用する必要はありません。配列も非常に便利です。
37. 本当に再利用するコードを慎重に考えてください。
38. 必要に応じていつでもコードをメソッドに分割できます。
39. できるだけ多くの PHP 組み込み関数を使用するようにしてください。
40. コード内に時間のかかる関数が多数ある場合は、C 拡張機能を使用して実装することを検討できます。
41. コードをプロファイリングします。チェッカーは、コードのどの部分にどれくらいの時間がかかっているかを示します。 Xdebug デバッガーには、コードの全体的な整合性を評価し、コード内のボトルネックを明らかにする検査ルーチンが含まれています。
42. mod_zip を Apache モジュールとして使用すると、データを即座に圧縮し、データ送信量を 80% 削減できます。
43. file、fopen、feof、fgets などの一連のメソッドを file_get_contents で置き換えることができる場合は、より効率的な file_get_contents を使用するようにしてください。ただし、URL ファイルを開くときは、file_get_contents の PHP バージョンの問題に注意してください。
44. PHP のファイル操作効率は低くありませんが、Select SQL ステートメントを最適化します。このような状況では、挿入操作と更新操作をできるだけ少なくします (更新に関して批判されました)
46. できる限り PHP の内部関数を使用します (ただし、 PHP には存在しません。カスタム関数を作成するのにかかる時間は短くなります。これは経験の問題です。
47. ループ内で変数、特に大きな変数を宣言しないでください。 PHP の問題ですよね?);
48. 多次元配列でネストされた代入をしないようにしてください。PHP の内部文字列操作関数を使用できる場合は、 を使用しないでください。
50. while ループや for ループの代わりに foreach を使用するようにしてください。
52. 文字列を引用符で囲むには、i+=1 を使用してください。 i+1. C/C++ の習慣に準拠しており、より効率的です。" "高"; 53. グローバル変数については、使用後に unset() する必要があります。
以上、Apache、require、グローバル変数、オブジェクト指向、正規表現など、PHP開発を効率化するテクニックを紹介しましたので、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とPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

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

ApacheでCGIディレクトリを設定する方法 ApacheでCGIディレクトリを設定する方法 Apr 13, 2025 pm 01:18 PM

ApacheでCGIディレクトリを設定するには、次の手順を実行する必要があります。「CGI-Bin」などのCGIディレクトリを作成し、Apacheの書き込み許可を付与します。 Apache構成ファイルに「Scriptalias」ディレクティブブロックを追加して、CGIディレクトリを「/cgi-bin」URLにマッピングします。 Apacheを再起動します。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

Apacheのサーバー名以上の削除方法 Apacheのサーバー名以上の削除方法 Apr 13, 2025 pm 01:09 PM

Apacheから追加のservernameディレクティブを削除するには、次の手順を実行できます。追加のservernameディレクティブを識別して削除します。 Apacheを再起動して変更を有効にします。構成ファイルを確認して、変更を確認します。サーバーをテストして、問題が解決されていることを確認します。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

See all articles