ホームページ >バックエンド開発 >PHPチュートリアル >PHPパフォーマンス最適化の詳細な例

PHPパフォーマンス最適化の詳細な例

黄舟
黄舟オリジナル
2017-07-27 10:08:461284ブラウズ

php は非常に人気のあるスクリプト言語であり、現在多くの企業 (Sina、Youku、Baidu、Sohu、Taobao など) が Web サイト開発にこの言語を使用しています。私のこの記事により、php スクリプトのパフォーマンスが向上することを願っています。 PHP スクリプトのパフォーマンスは、多くの場合、PHP バージョン、Web サーバー環境、コードの複雑さに依存することに注意してください。

コード内のボトルネックを最適化する

ホア氏はかつて、「時期尚早な最適化はすべての不幸の根源である」と言いました。 Web サイトの実行を高速化したい場合は、最適化を行う必要があります。コードを変更する前に何をする必要がありますか? システムが遅くなる原因は何ですか?次のガイダンスやその他の方法で PHP を最適化できます。PHP コードを最適化することで、システムのボトルネックを見つけることができます。

php のバージョンをアップグレードしてください

チーム メンバーは、長年にわたって php エンジンのパフォーマンスが大幅に向上していると示唆しています。 Web サーバーが php3 や php4 などの古いバージョンをまだ実行している場合。したがって、コードの最適化を試みる前に、バージョン間のアップグレードについて詳しく調べる必要があります。

具体的な詳細については、次のリンクをクリックしてください:

PHP 4 から PHP 5 への移植

PHP 5.0.x から PHP 5.1.x への移植

PHP 5.1.x から PHP 5.2.x への移植

キャッシュの使用

キャッシュ処理には、キャッシュ モジュール (Memcache など) またはテンプレート システム (Smarty など) を使用します。データベースの結果をキャッシュし、ページの結果を抽出することで、Web サイトのパフォーマンスを向上させることができます。

出力バッファを使用する

スクリプトがレンダリングしようとすると、PHP はメモリ バッファを使用してすべてのデータを保存します。キャッシュを使用すると、結果がユーザーに返される前に、応答するすべてのデータでバッファーがいっぱいになるため、ページが遅く見える場合があります。幸いなことに、バッファーがいっぱいになる前に PHP がユーザーに応答するように変更を加えることができ、これにより Web サイトの表示が速くなります。

  • 出力キャッシュ制御

単純なセッターとゲッターの作成を避ける

PHP クラスを作成する場合、オブジェクトのプロパティを直接操作できるため、時間を節約し、スクリプトのパフォーマンスを向上させることができます。人々を幼稚でばかばかしいと感じさせるようなセッターやゲッターではなく。

以下はいくつかのケースです: Dog クラスは setName() と getName() を使用して name 属性を操作します。

class dog {
  public $name = '';

  public function setName($name) {
    $this->name = $name;
  }

  public function getName() {
    return $this->name;
  }
}

注: setName() と getName() は、name 属性を保存して返すこと以外は何も行いません。

$rover = new dog();
$rover->setName('rover');
echo $rover->getName();

name 属性を直接設定してアクセスすると、パフォーマンスが 100% 向上し、開発時間も短縮できます。

$rover = new dog();
$rover->name = 'rover';
echo $rover->name;

変数をコピーしない理由はありません

時々、ジュニア PHP 者は、コードをより「きれい」にするために、既に定義されている変数を別の変数に再割り当てすることがよくあります。これにより、実質的にメモリ消費量が 2 倍になり (変数変更時)、スクリプトのパフォーマンス低下につながります。たとえば、ユーザーが 512KB の変数を別の変数に挿入すると、1MB のメモリが消費されます。

$description = strip_tags($_POST['description']);
echo $description;

上記のコードは、理由もなく変数をコピーします。追加のメモリを消費せずに変数をインラインで出力するだけで済みます。

echo strip_tags($_POST['description']);

SQL 操作をループ内で実行しないでください

よくある間違いは、SQL 操作をループ内に配置することです。これにより、データベースへの頻繁なアクセスが発生し、スクリプトのパフォーマンスの低下に直接つながります。次の例では、ループ操作を単一の SQL ステートメントにリセットできます。

foreach ($userList as $user) {
  $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
  mysql_query($query);
}

プロセス:

INSERT INTO users (first_name,last_name) VALUES("John", "Doe")

このループ スキームの代わりに、データを単一のデータベース操作に結合できます。

$userData = array();
foreach ($userList as $user) {
    $userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
 }
$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);
mysql_query($query);

プロセス:

INSERT INTO users (first_name,last_name) VALUES("John", "Doe"),("Jane", "Doe")...
  • MySQL INSERT構文

その他のリソース

  • PHP Memcacheモジュール

  • Smartyテンプレートエンジン

  • http ://3v4l.org --- 各バージョンを分析する時間内のコード実行効率、非常に優れたウェブサイト

  • 概要

この側面をより深く理解している場合は、一緒に議論することができます。提案は、他の PHPer が参照できるようにブログ投稿にも含まれています。 PHPer になることで、多くの PHPer を向上させることができます

その能力は大きな誇りです。


以上がPHPパフォーマンス最適化の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。