ホームページ バックエンド開発 PHPチュートリアル PHPの動作効率を向上させる方法

PHPの動作効率を向上させる方法

Jun 13, 2016 pm 01:03 PM
file gzip include php

PHPの動作効率を向上させる方法

[転送] PHP の利点の 1 つは非常に高速であることです。一般的な Web アプリケーションには十分であると言えます。ただし、サイトのトラフィックが多い、帯域幅が狭い、またはその他の要因によりサーバーのパフォーマンスのボトルネックが発生する場合は、PHP の速度をさらに向上させる他の方法を考える必要がある場合があります。

1.コードの最適化

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

(2)可能な限りPHP内部関数を使用する。自分で関数を書く前に、関連する関数がないかマニュアルを詳しく調べてください。そうでないと、無駄な作業になります。

(3) シングルクォートで囲まれた文字列を使用できる場合は、シングルクォートで囲まれた文字列を使用するようにしてください。一重引用符で囲まれた文字列は、二重引用符で囲まれた文字列よりも効率的です。

(4) 配列を走査するには、while の代わりに foreach を使用します。配列を走査するとき、foreach の効率は while ループの効率よりも大幅に高く、reset 関数を呼び出す必要はありません。 2 つの走査方法は次のとおりです:

手順1:

リセット ($arr);??

while (list($key, $value) = each ($arr)) {??

エコー "キー: $key; 値: $value
n";??

}

? プログラム 2:

foreach ($arr as $key => $value) {??

エコー "キー: $key; 値: $value
n";??

}

? 2. ページを圧縮します

HTTP1.1 プロトコルは、ページ圧縮送信をサポートしています。これは、サーバーがページを圧縮してクライアントに送信し、クライアント上でページを解凍してクライアントに表示することを意味します。サーバー側の送信には 2 種類あります 1 つは、送信時にページが事前に圧縮されているため、圧縮されたページをクライアントに送信するだけで済みます。この方法は、静的な Web ページが多数存在する状況に適していますが、ほとんどのサイトでは動的ページが多数存在します。この方法 クライアントに送信されるページの多くは実際には存在しないため、この方法は適していません。そのため、生成された各動的ページは、送信する前にパッケージ化して圧縮する必要があります。クライアントに。 縮む。 PHP バージョン 4.0.4 以降では、php.ini ファイルに設定行「output_handler =」を追加できます。 ob_gzhandler" を使用すると、動的に生成された各ページがクライアントに送信される前に圧縮されますが、PHP 公式サイトの指示によると、このパラメータは "zlib.output_compression= 「on」パラメータは、PHP の動作異常を引き起こしやすいため、同時に使用されます。また、PHP プログラムの動的に生成されたページのみを圧縮できますが、多数の静的ページに対しては機能しません。ただし、特に画像ファイル。 mod_gzip モジュールは、静的ページをクライアントに渡す前に圧縮する機能を Apahe に提供します。その圧縮率は最大 10 に達します。通常の状況では、圧縮率は 10 に達します。 3、つまり、Web サイトの通信速度が 3 倍以上に向上しました。 mod_gzip を使用するには、それに応じて Apache を設定する必要があります。 httpd.conf ファイルにいくつかのパラメータを追加する必要があります。 番号:

mod_gzip_on はい (モジュールが有効かどうか)

mod_gzip_minimum_file_size 1002 (最小圧縮ファイルサイズ)

mod_gzip_maximum_file_size 0 (圧縮ファイルの最大サイズ、0 は制限なしを意味します)

mod_gzip_maximum_inmem_size 60000 (最大占有メモリ)

mod_gzip_item_include ファイル "..gif102SINA>DOUBLE_QUOTATION (gif で終わるファイルは圧縮して送信する必要があります)

mod_gzip_item_include ファイル「.txt102SINA>DOUBLE_QUOTATION

mod_gzip_item_include ファイル「.html102SINA>DOUBLE_QUOTATION

mod_gzip_item_exclude ファイル「.css102SINA>DOUBLE_QUOTATION

3. ファイルのキャッシュ

このメソッドは通常、PHP や PERL などの CGI プログラムで使用されます。これらのプログラムには、ユーザーのリクエストを受け取った後、すぐに結果をユーザーに返さないという共通の特徴があるためです。 インタプリタによる解釈と実行後、実行結果がクライアントに返されますが、これには通常データベースへのアクセスが伴います。これにより、2 人のユーザーが同じページにアクセスすると、システムは 2 つのリクエストを別々に処理します。 操作は実行されますが、実際には 2 つの操作がまったく同じである可能性があり、目に見えないほどシステムの負荷が増加します。したがって、通常の解決策は、ユーザーが初めてページにアクセスしたときに、システム メモリ内のスペースを開くことです。 実行結果はメモリに保存され、ユーザーが再度ページにアクセスすると、システムはページを再解釈して実行せずにメモリから直接呼び出します。このメモリ空間はキャッシュと呼ばれます。現在人気のキャッシュチューブ 管理者は Zend Technologies の Zend Cache です。

4.システム外部コマンドの実行

PHP は、サーバーサイドのスクリプト言語として、単純または複雑な動的 Web ページの作成などのタスクを完全に実行できます。ただし、常にそうとは限りません。場合によっては、特定の機能を実装するために、半分の労力で 2 倍の結果を得ることができるように、オペレーティング システムの外部プログラム (またはコマンド) に頼らなければなりません。

PHP で外部コマンドを呼び出すには、以下に紹介する 3 つの方法を使用できます。

5. PHP が提供する特別な関数を使用する

PHP は、外部コマンドを実行するための 3 つの特殊な関数、system()、exec()、および passthru() を提供します。

システム()

プロトタイプ: 文字列 システム (文字列コマンド [, int return_var])

system() 関数は他の言語の関数と似ており、指定されたコマンドを実行し、結果を出力して返します。 2 番目のパラメーターはオプションであり、コマンドの実行後にステータス コードを取得するために使用されます。

例:

system("/usr/local/bin/webalizer/webalizer");

exec()

プロトタイプ: string exec (文字列コマンド [, 文字列配列 [, int return_var]])

exec() 関数と System() も同様で、指定されたコマンドを実行しますが、結果は出力せず、結果の最後の行を返します。コマンド結果の最後の行のみを返しますが、2 番目のパラメーター配列を使用して完全な結果を取得できます。 結果全体が 1 行ずつ配列の末尾に追加されます。したがって、配列が空でない場合は、呼び出す前に unset() を使用して配列をクリアするのが最善です。第二引数を指定した場合のみ、 コマンド実行時のステータスコードを取得できるのは第3パラメータのみです。

例:

exec("/bin/ls -l");

exec("/bin/ls -l", $res);

exec("/bin/ls -l", $res, $rc);

パススルー()

プロトタイプ: void パススルー (文字列コマンド [, int return_var])

passthru() はコマンドを呼び出すだけで、結果は返しません。 コマンドの実行結果はそのまま標準出力装置に出力されます。したがって、pbmplus (Unix で画像を処理するツール) を呼び出すために passthru() 関数がよく使用されます。 RAW 画像のバイナリ ストリームを出力するプログラム。コマンド実行時のステータスコードも取得できます。

例:

header("コンテンツタイプ: 画像/gif");

パススルー("./ppmtogif ハント.ppm");

6. Popen() 関数を使用してプロセスを開きます

上記のメソッドは単にコマンドを実行するだけで、コマンドと対話することはできません。ただし、コマンドに何かを入力する必要がある場合があります。たとえば、Linux システム ユーザーを追加する場合、su を呼び出して現在のユーザーを root に変更する必要があり、su コマンドはコマンド ラインに root パスワードを入力する必要があります。この場合、明らかに上記の方法を使用することはできません。

Popen() 関数は、プロセス パイプを開いて指定されたコマンドを実行し、ファイル ハンドルを返します。ファイルハンドルが返されるので、読み書きが可能です。 PHP3ではこのような文章の場合 PHP4 以降、ハンドルは書き込みまたは読み取りの 1 つの操作モードのみを実行できるようになり、読み取りと書き込みを同時に行うことができます。ハンドルが 1 つのモード (読み取りまたは書き込み) でオープンされていない限り、pclose() を呼び出す必要があります。 それを閉じる機能。

例 1:

$fp=popen("/bin/ls -l"、"r");

例 2:

/* PHP でシステム ユーザーを追加する方法

次は、james という名前のユーザーを追加するルーチンです。

root パスワードは非常に優れています。あくまで参考として

*/

$sucommand = "su --ログインルート --コマンド";

$useradd = "useradd ";

$rootpasswd = "非常に良い"

$user = "ジェームズ"

$user_add = sprintf("%s "%s %s"",$sucommand,$useradd,$user);

$fp = @popen($user_add,"w");

@fputs($fp,$rootpasswd)

@pclose($fp)

?

?

?

適切なプログラミング スタイルを開発する

多くの場合、PHP の最も価値のある機能は、その緩い構文であるという最大の弱点でもあります。 PHP が広く使用されているのは、経験の浅い Web 開発者の多くが計画、一貫性、ドキュメント化についてあまり心配することなく強力なアプリケーションを作成できるためです。残念ながら、まさにその理由は、 上記の特性により、多くの PHP ソース コードは肥大化して読みにくく、さらには保守が不可能になります。コードの保守性を決定する重要な要素は、コードの形式とコメントです。プロジェクトのすべてのコードは一貫した方法で編成する必要があります 織ります。以下では、PHP プログラムで適切なコーディング スタイルを開発する方法について説明します。

?

7. インデント

?

開発者が記述するすべてのコードは、完全にインデントされた方法で記述する必要があります。これは、コードの可読性を向上させるための最も基本的な対策です。コードにコメントを付けない場合でも、コードを他の人が理解しやすくするためにインデントは非常に役立ちます。

?

8. コメントを追加

?

プログラミング時にコメントを追加することは良い習慣です。PHP では、コメントをページ コードに追加できます。コメントの具体的な方法は、C 言語のコメント構文と同じです。 「/*」と「*/」を使用して段落をコメントアウトできます。ダブルスラッシュ「//」はコメント文字として使用できます。

?

9. 制御構造

?

これは個人の好みに大きく依存します。分岐ステートメントのない制御構造コードがまだ多くあり、その結果、可読性が非常に低くなります。分岐のない IF ステートメントを使用すると、可読性が悪化するだけでなく、他の人がプログラムを変更したときに、多くのエラーが発生します。バグ。以下の例を参照してください:

?

悪い例:

?

if ($a == 1) echo 'A は 1 に等しかった';

?

識別するのは非常に困難です。それはうまくいきますが、あなた以外には誰もそれを評価しません。 改善された例:

?

if ($a == 1)

エコー 'A でした 1 に等しい

?

?

これで、少なくともこのコードは読み取れるようになりましたが、まだ保守性は高くありません。 $a==1 のときに追加のイベントを発生させたい場合、または分岐を追加する必要がある場合はどうすればよいでしょうか? 後のプログラマーが中括弧や else キーワードを追加するのを忘れた場合、プログラムにバグが発生します。

?

完璧な例

?

if (($a == 1) && ($b==2)) {

エコー 'A でした 1 に等しい'; // 他のコードを追加するのは簡単です

} elseif (($a == 1) && ($b==3)) { //その他の操作

}

?

?

if と elseif の後のスペースに注意してください。これにより、このステートメントが関数呼び出しと区別されます。また、elseif の実行セクションにはステートメントがなく、コメントのみであるため、一見冗長に見えますが、プログラムのプログラマーは、非常に便利なヒントを提供し、機能の追加に非常に役立ちました。

?

10. Include を使用して機能モジュール化を実装します

?

よく使う関数を PHP ファイルに保存しておくと、その関数を他の PHP ページで使用したい場合、その関数を呼び出す PHP ファイルにその関数を含めることができます。関数を含めます。具体的な構文は次のとおりです:

?

include($FileName);

?

使用する際の注意事項

?

1. 自己包含は避けるべきです。つまり、File1 には File1 が含まれます。複数のファイルに include ステートメントがある場合は、File1 に File2、File2 が含まれるなど、間接的な自己包含、つまり循環包含は避けるべきです。 File3 には File3 が含まれ、File3 には File1 が含まれます。

?

2. 含まれるスクリプト言語のタイプは、PHP 言語タイプまたはスクリプト ステートメント セグメントである必要があります。

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

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でHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles