ホームページ  >  記事  >  バックエンド開発  >  PHP技術開発スキルの共有_PHPチュートリアル

PHP技術開発スキルの共有_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:40:101153ブラウズ

1. PHPの動作効率の向上
PHPの利点の1つは非常に高速であることであり、一般的なWebサイトアプリケーションには十分であると言えます。ただし、サイトのトラフィックが多い、帯域幅が狭い、またはその他の要因によりサーバーのパフォーマンスのボトルネックが発生する場合は、PHP の速度をさらに向上させる他の方法を考える必要がある場合があります。
1.1. コードの最適化
1. i=i+1 の代わりに i+=1 を使用します。 C/C++ の習慣に準拠しており、非常に効率的です。
2. 可能な限りPHPの内部関数を使用する。自分で関数を書く前に、関連する関数がないかマニュアルを詳しく調べてください。そうでないと、無駄な作業になります。
3. 一重引用符で囲まれた文字列を使用できる場合は、一重引用符で囲まれた文字列を使用するようにしてください。一重引用符で囲まれた文字列は、二重引用符で囲まれた文字列よりも効率的です。
4. 配列を走査するには while の代わりに foreach を使用します。配列を走査するとき、foreach の効率は while ループの効率よりも大幅に高く、reset 関数を呼び出す必要はありません。 2 つのトラバーサル メソッドは次のとおりです。
プログラム 1:

コードをコピーします。 コードは次のとおりです。
reset ($arr)
while (list($key, $value) = each ($ arr)) {
echo "key: $ key; value: $ value";

プログラム 2:


コードを次のようにコピーします:
Foreach ($ arr as $ key = & gt ; $ value) { echo "Key: $key; Value: $valuen";
1.2. 圧縮されたページ
HTTP1.1 プロトコルは、サーバーがページを圧縮して送信することを意味します。クライアントに送信され、次にクライアントに送信されます。 ページは解凍されて顧客に表示されます。サーバー側で送信する方法は 2 つあります。1 つは、送信するときに、圧縮されたページをクライアントに送信するだけです。これは、静的な Web ページが多い場合に適しています。ほとんどのサイトでは、動的ページの数が多くなりますが、クライアントに送信されるページの多くは実際には存在しないため、クライアントからのユーザー要求を受信したときにサーバーによって動的に生成されるため、この方法は適していません。生成された動的ページは、圧縮してクライアントに送信する前に、まず生成する必要があります。 PHP バージョン 4.0.4 以降では、php.ini ファイルに設定行「output_handler = ob_gzhandler」を追加できるため、動的に生成された各ページはクライアントに送信される前に圧縮されますが、 PHP公式サイト, このパラメータは、PHPの動作異常を引き起こしやすいため、「zlib.output_compression = on」パラメータと同時に使用することはできません。また、PHPプログラムの動的に生成されたページのみを圧縮できます。多数の静的ページ、特に画像ファイルでは機能しません。ただし、mod_gzip モジュールは、静的ページをクライアントに送信する前に圧縮する機能を Apahe に提供します。その圧縮率は最大 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 ファイル "..gif102 SINA>DOUBLE_QUOTATION (gif で終わるファイルは圧縮されている必要があります)送信済み) mod_gzip_item_include ファイル ".txt102SINA>DOUBLE_QUOTATION
mod_gzip_item_include ファイル ".html102SINA>DOUBLE_QUOTATION
mod_gzip_item_exclude ファイル ".css102SINA>DOUBLE_QUOTATION


1.3. ファイルキャッシュ
この方法は通常、PHP や PERL などの CGI プログラムで使用されますが、これらのプログラムは、ユーザーのリクエストを受け取った後、すぐに結果をユーザーに返すのではなく、インタプリタを介してユーザーに返すという共通の特徴があるためです。解釈と実行を行うと、実行結果がクライアントに返されます。これには通常、データベースへのアクセスが伴います。これにより問題が発生します。2 人のユーザーが同じページにアクセスすると、システムは 2 つのリクエストを別々に処理しますが、実際には 2 つの操作がまったく同じである可能性があり、目に見えないほどシステムの負荷が増加します。したがって、通常の解決策は、ユーザーが初めてページにアクセスしたときにシステム メモリにスペースを空け、ユーザーが再度そのページにアクセスしたときに、システムがそのページを直接削除することです。再解釈や実行を行わずにメモリから呼び出されるこのメモリ空間はキャッシュと呼ばれます。現在人気のあるキャッシュ管理プログラムは、Zend Technologies の Zend Cache です。
2. システムの外部コマンドを実行します
サーバーサイドスクリプト言語として、PHP は単純または複雑な動的 Web ページを作成するなどのタスクを十分に実行できます。ただし、常にそうとは限りません。場合によっては、特定の機能を実装するために、半分の労力で 2 倍の結果を得ることができるように、オペレーティング システムの外部プログラム (またはコマンド) に頼らなければなりません。
PHP で外部コマンドを呼び出すには、次の 3 つの方法を使用できます:
2.1. PHP が提供する特別な関数を使用します
PHP は、外部コマンドを実行するために、合計 3 つの特別な関数を提供します: system()、exec()、passthru( )。
system()
プロトタイプ: string system (string command [, int return_var])
system() 関数は、他の言語の関数と似ており、指定されたコマンドを実行し、結果を出力して返します。 2 番目のパラメーターはオプションであり、コマンドの実行後にステータス コードを取得するために使用されます。
例:
system("/usr/local/bin/webalizer/webalizer");
exec()
プロトタイプ: string exec (string command [, string array [, int return_var]])
Exec() 関数とシステム() も同様で、指定されたコマンドも実行されますが、結果は出力されず、結果の最後の行が返されます。コマンド結果の最後の行のみを返しますが、2 番目のパラメーター配列を使用すると、配列の最後に結果を 1 行ずつ追加することで完全な結果を取得できます。したがって、配列が空でない場合は、呼び出す前に unset() を使用して配列をクリアするのが最善です。第3パラメータは第2パラメータを指定した場合のみ、コマンド実行時のステータスコードを取得できます。
例:
コードをコピーします コードは次のとおりです:

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


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


コードをコピーします コードは次のとおりです:
header("Content-type: image/gif")


2.2. Popen()関数を使用してプロセスを開きます
上記のメソッドは単にコマンドを実行するだけで、コマンドと対話することはできません。ただし、コマンドに何かを入力する必要がある場合があります。たとえば、Linux システム ユーザーを追加する場合、su を呼び出して現在のユーザーを root に変更する必要があり、su コマンドはコマンド ラインに root パスワードを入力する必要があります。この場合、明らかに上記の方法を使用することはできません。
popen() 関数は、指定されたコマンドを実行するためのプロセス パイプを開き、ファイル ハンドルを返します。ファイルハンドルが返されるので、読み書きが可能です。 PHP3 では、この種のハンドルは書き込みまたは読み取りの 1 つの操作モードでのみ使用できますが、PHP4 以降は読み取りと書き込みを同時に行うことができます。ハンドルが 1 つのモード (読み取りまたは書き込み) で開かれていない限り、ハンドルを閉じるには pclose() 関数を呼び出す必要があります。
例1
$fp=popen("/bin/ls -l", "r");
例2



コードをコピーする
コードは以下の通りです: /* の追加方法PHP のシステム ユーザー
以下は、James という名前のユーザーを追加するルーチンです。
root パスワードは非常に良いです。参考までに
("%s "%s %s"",$sucommand,$useradd,$user);
$fp = @popen($user_add,"w"); );
@pclose($fp);
3. 適切なプログラミング スタイルを開発する
多くの場合、PHP の最も価値のある機能は、その緩い構文である最も弱い部分でもあります。 PHP が広く使用されているのは、経験の浅い Web 開発者の多くが計画、一貫性、ドキュメント化についてあまり心配することなく強力なアプリケーションを作成できるためです。残念ながら、上記の特性により、多くの PHP ソース コードは肥大化して読みにくく、さらには保守が不可能になってしまいます。コードの保守性を決定する重要な要素は、コードの形式とコメントです。プロジェクトのすべてのコードは、一貫した方法で編成する必要があります。以下では、PHP プログラムで適切なコーディング スタイルを開発する方法について説明します。
3.1. インデント
開発者が書くすべてのコードは完全にインデント方法に従って書かれるべきです。これは、コードの可読性を向上させるための最も基本的な対策です。コードにコメントを付けない場合でも、コードを他の人が理解しやすくするためにインデントは非常に役立ちます。
3.2. コメントを追加する
プログラミング時にコメントを追加することは良い習慣です。PHP では、コメントをページコードに追加することができます。コメントは、C 言語のコメント構文と同じです。 「/*」と「*/」を使用して段落をコメントアウトできます。ダブルスラッシュ「//」はコメント文字として使用できます。
3.3. 制御構造
これは個人の好みに大きく依存します。分岐ステートメントのない制御構造のコードがまだ多くあり、その結果、可読性が非常に低くなります。たとえば、分岐のない IF ステートメントを使用すると、可読性が悪化するだけでなく、他の人がプログラムを変更したときに可読性が低下します。多くのバグを引き起こします。次の例を見てください:
悪い例:
if ($a == 1) echo 'A was = 1';
これは非常に読みにくいです。それはうまくいきますが、あなた以外には誰もそれを評価しません。 改良された例:
if ($a == 1)
echo 'A was等しい 1';
これで、少なくともこのコードは読み取れるようになりましたが、まだあまり保守しやすくはありません。 $a==1 のときに追加のイベントを発生させたい場合、または分岐を追加する必要がある場合はどうすればよいでしょうか? 後のプログラマーが中括弧や else キーワードを追加するのを忘れた場合、プログラムにバグが発生します。
完璧な例
コードをコピー コードは次のとおりです:

if (($a == 1) && ($b==2)) {
echo 'A was等しい' / /very 他のコードも簡単に追加できます
} elseif (($a == 1) && ($b==3)) { //その他の操作
}

ifとelseifの後のスペースに注意してください。変更されますまた、elseif 実行プログラム部分にはステートメントはなくコメントのみが存在し、一見冗長に見えますが、将来プログラムを保守するプログラマにとっては非常に便利なヒントとなります。 、機能の追加に非常に役立ちます。
3.4. Includeを使って関数のモジュール化を実現します
よく使う関数をPHPファイルに格納しておき、その関数を呼び出すPHPファイルに関数を含めたファイルをインクルードします。このとき、Include関数を使用できます。具体的な構文は次のとおりです:
include($FileName);
使用するときは次の点に注意してください:
1. 複数のファイルに include ステートメントがある場合、File1 には File1 が含まれます。 File1 には File2 が含まれ、File2 には File3 が含まれ、File3 には File1 が含まれるなど、自己完結型、つまり循環的な包含は避けるべきです
2. 含まれるスクリプト言語のタイプは、PHP 言語タイプまたはスクリプト ステートメント セグメントである必要があります。 。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/321463.html技術記事 1. PHP の動作効率の向上 PHP の利点の 1 つは高速であることであり、一般的な Web アプリケーションには十分であると言えます。ただし、サイトのトラフィックが多い、帯域幅が狭い、またはその他の場合は...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。