ホームページ  >  記事  >  バックエンド開発  >  PHPのパフォーマンス最適化の詳細な紹介

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

黄舟
黄舟オリジナル
2017-03-20 10:14:31937ブラウズ

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

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

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

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

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

キャッシュを使用する

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

出力バッファを使用する

スクリプトがレンダリングしようとすると、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 構文

概要

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

。 ——多くの人は PHP を草の根言語だと考えていますが、私は個人的には、PHP 言語が将来さらに発展し、PHPer の手に渡るお金がもっと増えることを願っています。

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

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