PHPのパフォーマンスを最適化する方法の紹介

リリース: 2023-04-08 10:24:01
転載
2869 人が閲覧しました

php は非常に人気のあるスクリプト言語であり、現在多くの企業 (Sina、Youku、Baidu、Sohu、Taobao など) が Web サイト開発にこの言語を使用しています。 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 操作が実行されることになります。さらに重要なことに、データベースはスクリプトのパフォーマンス低下に直接つながります。次の例では、ループ操作を単一の 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")...
ログイン後にコピー

この記事は次から転載されています: https://www.cnblogs.com/baochuan/p/3523677.html

推奨される関連記事とチュートリアル:

PHP チュートリアル #

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

関連ラベル:
php
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート