ホームページ >バックエンド開発 >PHPチュートリアル >PHP はシングルスレッドですが、大量の http アクセスにどう対処すればよいでしょうか?
最初は、PHP が Web サイトの構築に使用できることだけを知っていて、PHP のスレッド問題に遭遇したことはありませんでしたが、今日、PHP がシングルスレッドであることを突然知りましたが、Web サイトが PHP で作られていることに突然気づきました。複数の訪問に使用する必要があります。訪問数が多い場合、キューの問題が発生するのではありませんか?
これは本当ですか?それとも、Apache は PHP プログラムを処理するときにサーバーを使用してマルチスレッドを実装するのでしょうか?
nginx+php
nginx+php
詳細を教えていただけますか?これは、apache+php がシングルスレッドであることを意味しますか?
nginx+php
確認したところ、apache+php はブロック処理であるのに対し、nginx+php は非同期でノンブロッキングであることが分かりました http アクセスの処理は Web サーバーの問題であり、何もする必要はありませんdo with php
php Webサーバーのスクリプトとしてのみ表示されます
httpアクセスの処理はWebサーバーの問題であり、phpとは関係ありません
PHPはWebサーバーのスクリプトとしてのみ表示されます
マルチスレッド WEB サーバーを使用して PHP を呼び出すことができます。
PHP にはプロセスマネージャー、fpm fcgi などがあります。 PHP 言語自体にはマルチスレッドがありません。
高い同時実行性に対処するには、nginx またはその他のソフトウェアを負荷分散サービスとして使用します。 PHP レベルでは、gzip 圧縮やキャッシュなどを使用できます。
PHP にはマルチスレッドがないため、コード内で別のスレッドを開いて他のタスクを実行することはできません。ただし、これは Java のように多数のメインライン ロジックを同時に実行することはできません。リクエストは nginx または Apache によって処理され、その後 PHP が呼び出されて処理されるため、スクリプトにアクセスする必要がある多くのプロセスが開きます。各ユーザーはサーバー上の PHP スクリプトのプロセスに対応して実行されます。 その後 (ページが開かれる)、プロセスは破棄され、メモリが解放されます
PHP にはマルチスレッドがないため、別のスレッドを開くことはできません。他のタスクを実行するためのコード。Java のように複数のメインスレッドを同時に実行することはできません。ただし、リクエストは nginx または Apache によって処理されるため、これは大量のアクセスとはほとんど関係がありません。その後、php が処理のために呼び出されます。これにより、スクリプトにアクセスする必要があるプロセスとスレッドがそれぞれ異なります。実行 (ページが開かれる) すると、プロセスが破棄され、メモリが解放されます。
php は 1 つのプロセスを処理した後、他のプロセスを処理します。
起動されたすべての PHP インタプリタは互いに独立しています
当然、それらによって解釈される PHP コードも互いに独立しています
いわゆるシングルトンは現在実行中の PHP コードコレクションのみです
個人的な理解では、PHP は A開発言語はスレッドとは何の関係もありません。
PHP にはマルチスレッドがないため、コード内で別のスレッドを開いて他のタスクを実行することはできません。ただし、これは Java とはほとんど関係ありません。リクエストが nginx または Apache によって処理され、その後、処理のために PHP が同時に呼び出される可能性があるため、スクリプトにアクセスする必要がある多くのプロセスが開かれます。各ユーザーはサーバー上の PHP スクリプトに対応します。プロセスが実行された後 (ページが開かれた後)、プロセスは破棄され、メモリが解放されます。