ホームページ  >  記事  >  バックエンド開発  >  PHPのスレッドセーフとスレッドセーフなしの違いは何ですか

PHPのスレッドセーフとスレッドセーフなしの違いは何ですか

青灯夜游
青灯夜游オリジナル
2021-06-03 14:48:292282ブラウズ

違い: スレッド セーフはスレッド セーフを意味し、新しい要件が発生してシステム リソースが枯渇した場合に新しいスレッドが開始されるのを防ぐために実行中にスレッド (スレッド) セーフティ チェックが実行されますが、スレッド セーフなしは非スレッドを意味します。実行中にスレッドの安全性チェックは実行されません。

PHPのスレッドセーフとスレッドセーフなしの違いは何ですか

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 7.1、DELL G3 コンピューター

PHP の Windows バージョンは、バージョンから始まります。 5.2.1 スレッドセーフ(スレッドセーフ)となしスレッドセーフ(非スレッドセーフ)がありますが、両者の違いは何ですか?

  • None Thread Safe は非スレッド セーフを意味し、実行中にスレッド (スレッド) の安全性チェックは実行されません。

  • スレッド セーフとは、スレッドの安全性を意味します。スレッド セーフ チェックは実行中に実行され、新しい要件が発生してシステム リソースが枯渇したときに新しいスレッドが開始されるのを防ぎます。

2000 年 10 月 20 日にリリースされた最初の Windows バージョンの PHP 3.0.17 以降、すべてのバージョンはスレッドセーフです。これは、Linux/Unix システムが複数のスレッドを使用するためです。プロセスの動作方法の違いは、Windows システムがマルチスレッド動作方式を使用していることです。 IIS で CGI モードで PHP を実行すると、CGI モードがマルチスレッドではなくマルチプロセスに基づいているため、非常に遅くなります。

通常、PHP は ISAPI モードで実行されるように設定します。ISAPI はマルチスレッド方式であり、非常に高速です。しかし、問題があります。一般的に使用される PHP 拡張機能の多くは、Linux/Unix のマルチプロセスの考え方に基づいて開発されており、これらの拡張機能を ISAPI モードで実行すると、エラーが発生し、IIS がダウンします。

したがって、CGI モードは IIS で PHP を実行する最も安全な方法ですが、CGI モードでは HTTP リクエストごとに PHP 環境全体をリロードおよびアンロードする必要があり、その消費量は膨大です。

IIS での PHP の効率とセキュリティを考慮するために、Microsoft は FastCGI ソリューションを提供しました。 FastCGI を使用すると、新しいリクエストごとにプロセスを再度開くのではなく、PHP プロセスを再利用できます。同時に、FastCGI では複数のプロセスを同時に実行することもできます。これにより、CGI プロセス モードの過剰な消費の問題が解決されるだけでなく、CGI プロセス モードにはスレッド セーフの問題がないという事実も利用されます。

したがって、ISAPI を使用して PHP を実行する場合は、スレッド セーフ (スレッド セーフ) バージョンを使用する必要があります。また、FastCGI モードを使用して PHP を実行する場合は、スレッド セーフ チェックを使用する必要はなく、None を使用してください。スレッド セーフ (NTS、非スレッド セーフ) バージョンを使用すると、効率が向上します。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPのスレッドセーフとスレッドセーフなしの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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