検索
ホームページバックエンド開発PHPチュートリアル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 までご連絡ください。
どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?May 02, 2025 am 12:11 AM

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

PHPセッションはCookieとどのように異なりますか?PHPセッションはCookieとどのように異なりますか?May 02, 2025 am 12:03 AM

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

メモ帳++7.3.1

メモ帳++7.3.1

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール