PHP

PHP(Hypertext Preprocessor)は、ウェブ開発に適したオープンソースのスクリプト言語です。サーバーサイドで動作し、クライアント(ブラウザ)にコードを送信する前に、ウェブサーバー上でコードを処理します。WordPressはPHPで構築されているため、WordPressサイトにはPHPが欠かせません。PHPにより、以下のことが可能になります。

  • 動的コンテンツを生成し、リアルタイムでウェブサイトに表示
  • データベースと連動し、データを取得・保存
  • フォームを扱い、ユーザー入力を処理して、インタラクティブ性を確保
  • テーマやプラグインでWordPressコア機能を拡張
  • コンテンツがユーザーのブラウザに届く前に、ウェブサーバー上で多くの処理を行いパフォーマンスを改善

PHPの処理

訪問者がキャッシュされていないページにアクセスしたり、ページ上で操作(商品を買い物カゴに入れる、フォームを送信するなど)を実行すると、以下のような処理が行われます。

  1. ウェブサーバー(弊社ではNginx)がリクエストを受け取る
  2. NginxがリクエストをPHPに渡し、PHPは利用可能なPHPスレッドに割り当てられる
  3. PHPスレッドがPHPスクリプトを実行(データベースからのデータ取得やフォーム処理など)
  4. スクリプト実行中にPHPスレッドがサーバーのメモリの一部(弊社で設定されたPHPメモリ上限まで)を使用
  5. 複数の同時リクエストがある場合、各リクエストは異なるPHPスレッドに割り当てられる(すべてのスレッドがビジー状態である場合、追加のリクエストは待機)
  6. PHPがテーマのPHPファイル(および該当する場合はプラグインファイル)を使用してHTMLページを生成
  7. PHPがレンダリングされたHTMLページをウェブサーバーに返す
  8. 訪問者にページが表示される

キャッシュを使用していない、またはサイトが最適化されていない場合、PHPスレッドが長時間ビジー状態になることで、パフォーマンスが低下したり、訪問者にタイムアウトや503/504エラーが発生したりする可能性があります。PHPのパフォーマンスを確認して、PHPスレッドを最適化する方法はこちらをご覧ください。

PHPスレッド

PHPスレッド(以前はワーカープロセスとして知られる)は、ウェブサイトへのリクエストを処理する個々のワーカープロセスです。各スレッドは一度に1件のリクエストを処理します。スレッドが2つある場合は、同時に2件のリクエストを処理することができます。これにはページの構築、バックグラウンドタスクの処理、データベースへのクエリなどが含まれます。

PHPスレッドは、1件のリクエストの処理(ページのレンダリングやデータベースからのデータ取得など)を終えると、次のリクエストを処理できるようになります。

PHPスレッドが必要になるのは、コンテンツの多くをキャッシュしていない、あるいはキャッシュできない場合です。サイトが動的であればあるほど、通常より多くのPHPスレッドが必要になります。キャッシュされたコンテンツの提供にPHPスレッドは不要で、情報の取得や変更のためにデータベースに問い合わせなければならない場合のみ、PHPスレッドが必要になります。サイトを適切に最適化すると、リクエストは素早く処理され、PHPスレッドを効率的に解放して次のリクエストに備えることができます。

PHPスレッドを最適化する方法はこちらをご覧ください。

各プランに含まれるPHPスレッド数

弊社の各プランにデフォルトで含まれるPHPメモリプール、スレッド数、スレッドあたりのメモリ上限は以下のとおりです。

プランプールサイズスレッド数スレッドあたりのメモリ
Single 35k512MB2256MB
Single 65k1GB4256MB
Single 125k1.5GB6256MB
Single 315k1.5GB6256MB
Single 500k2GB8256MB
Single 750k2GB8256MB
WP 2512MB2256MB
WP 51GB4256MB
WP 101GB4256MB
WP 201.5GB6256MB
WP 401.5GB6256MB

各サイトのPHPスレッド数を変更するには、「WordPressサイト」>(サイト名)>「PHPパフォーマンス」セクションの「変更する」をクリックしてください。

以下のプランでは現在、PHPパフォーマンスアドオンやPHPメモリプール総量を行うことはできませんが、それぞれ以下の数のPHPスレッドがデフォルトで含まれます。

プランサイトあたりのPHPスレッド数
Single 1.25M10
Single 1.9M12
Single 2.5M14
Single 3.15M16
WP 608
WP 8010
WP 12012
WP 15014
Agency 206
Agency 406
Agency 608

PHPメモリ上限

PHPメモリ上限は、各PHPスレッドがリクエスト処理中に使用できるメモリ(RAM)の最大量です。

PHPスクリプト(特にWordPress)は、大きなデータベースクエリやメディアアップロードのようなメモリ集約型のタスクでは、使用可能なメモリをオーバーしてエラーを引き起こす可能性があります。これは、サイトを構成する際に考慮すべき重要な点になります。

スクリプトがメモリ上限を超えると、エラーが発生します(「Allowed memory size exhausted(許容メモリサイズを超えました)」エラーなど)。これにより、1つのスクリプトがサーバーのリソースを過剰に消費するのを防ぐことができます。

各プランのPHPメモリ上限

Single 35k、65k、125k、315k、500k、750k、WP 2、5、10、20、40プランのPHPメモリ上限は256MBです。これはほぼすべてのWordPressプラグインとサイトには十分な値です。Single 1.25M、1.9M、2.5M、3.15M、WP 60、80、120、150、およびAgency 20、40、60プランのメモリ上限は512MBです。PHPメモリ上限はPHPスクリプトがメモリの過剰消費を防ぐために設定されるものであり、上限を高く設定し過ぎると、誤った設定や壊れたスクリプトがメモリを消耗しすぎて深刻な問題を可能性があります。

サイトのPHPメモリ上限を変更するには、「WordPressサイト」>(サイト名)>「情報」>「PHPパフォーマンス」セクションの「変更する」をクリックしてください。

PHPスレッドとメモリの相互作用

PHPスレッド数とPHPメモリ上限は異なるものです。PHPスレッドは、送られてくるリクエストを処理する個々のワーカープロセスを意味します。これに対して、PHPメモリ上限は、単一のPHP スクリプトが実行中に使用できるメモリ(RAM)の最大量を定義するものです。

PHPスレッドは、複数のリクエストを同時に処理することで並行性を管理するものですが、PHPメモリ上限は、個々のスクリプトのメモリ使用量を定義することでリソースの割り当てを管理します。これにより、単一のスクリプトがサーバーで使用可能なすべてのメモリを消費することを防ぎます。

PHPメモリ上限は、大規模なデータベースクエリの実行やファイルアップロードの処理、複雑な計算の実行など、大量のメモリを必要とするスクリプトにとって重要です。サイトでメモリ上限エラーが発生した場合は、PHPスレッドの数を増やしても解決されません。「WordPressサイト」>(サイト名)>「情報」>「PHPパフォーマンス」セクションの「変更する」をクリックし、スレッドあたりのメモリを増やす必要があります。

PHPスレッド、CPU、RAM間の相互作用

PHPスレッドを追加する際には、CPUおよびRAMのリソースを考慮する必要があります。スレッドの数を増やしても、サーバーがそのスレッドをサポートするために多くのCPUやRAMを必要とする場合は、リクエストを効率的に処理することができず、ボトルネックになります。

弊社独自のLXDコンテナは、それぞれ12個のCPUと8GBのRAMで構成されています。Google Cloudの最速CPUを搭載しコンピューティングに最適化されたC2およびC3D仮想マシンを使用して、PHPスレッドをより効率的に実行します。スケーラブルなインフラストラクチャにより、WordPressサイトのPHPスレッドが最高のパフォーマンスで動作するのに十分なCPUリソースが確保されます。

PHPのデフォルト値

WordPress向けのマネージドサービスを提供する企業として、WordPressサイトで最適に動作するように構成されたPHP設定を行っています。特定のPHP要件をお持ちのお客様は、弊社カスタマーサポートまでお気軽にお問い合わせください。

弊社では現在、PHP 7.4、8.0、8.1、8.2、8.3、8.4をサポートしています。PHPのデフォルト設定は以下のとおりです。

  • memory_limit = 256M
  • post_max_size = 128M
  • upload_max_filesize = 128M
  • max_input_vars = 10000
  • max_execution_time = 300
この記事は役に立ちましたか?