ホームページ >バックエンド開発 >PHPの問題 >PHPのntsとtsの違いは何ですか

PHPのntsとtsの違いは何ですか

WBOY
WBOYオリジナル
2022-02-21 15:21:154041ブラウズ

php における nts と ts の違い: ts はスレッド セーフを意味し、マルチスレッド アクセスにはロック メカニズムが使用されます。1 つのスレッドがこのクラスの特定のデータにアクセスするとき、他のスレッドは同時にそのデータにアクセスできません。 nts は非スレッド セーフを意味し、スレッド アクセス保護は提供されませんが、複数のスレッドが同じデータを同時に操作できます。

PHPのntsとtsの違いは何ですか

この記事の動作環境: Windows 10 システム、PHP バージョン 7.1、Dell G3 コンピューター。

php の nts と ts の違いは何ですか

PHP 開発環境および運用環境をセットアップするプロセスでは、PHP 言語パーサーをインストールする必要があります。公式ではスレッドセーフ(TS)版と非スレッドセーフ(NTS)版の2種類が提供されていますが、開発環境と実際の本番環境が異なる場合もあるので、対応するものをインストールするかどうかも選択する必要があります。 PHPのバージョン。

今後の参考のためにここにメモを記録してください...

1. はじめに

TS:

TS (Thread-Safety) とは、スレッド セーフの意味です。複数のスレッドからアクセスされる場合、ロック機構が採用されています。スレッドがこのクラスの特定のデータにアクセスすると、そのデータはロックされて保護され、他のスレッドはアクセスできなくなります。データにアクセスした後は、スレッドが読み取りを完了するまで、他のスレッドはそのデータにアクセスして使用することができません。データの不整合やデータ汚染が発生しないという利点がありますが、NTS よりも時間がかかります。

PHP が ISAPI モード (Apache で一般的に使用される) でロードされる場合は、TS バージョンを選択します。

NTS:

NTS (None-Thread Safe) はスレッドセーフではなく、データ アクセス保護を提供しません。複数のスレッドが同じように動作する可能性があります。この場合、データの混乱(ダーティデータ)が発生しやすく、一般的な演算の実行時間はTSに比べて短くなります。

PHP がロードされ、FAST-CGI モードで実行される場合は、パフォーマンスを向上させるために TNS バージョンを選択してください;

ISAPI:

ISAPI (インターネット サーバー)アプリケーション プログラミング インターフェイス) は、通常、http サーバーによってロードされ、サーバー モジュールの形式で実行されることを指します。これは Microsoft によって提案されたため、Win プラットフォーム (Win [fast CGI] 下の Apache や iis など) でのみ実行できます。モードはより安定しています] 一方、Linux 上の php は Apache モジュール (一般的な方法) または php-fpm (この方法は NGINX PHP 操作により適しています) として実行されます。

CGI:

cgi (Common Gateway Interface): HTTP サーバーがクライアント マシン上のプログラムと「対話」するためのツール。サーバーと通信できるバックエンド言語。現時点では、PHP は独立したプログラムとして実行されており、メモリを消費するという特徴があります。

FAST CGI:

fast CGI は長期間有効な CGI です。常に実行できます。アクティブ化されている限り、毎回実行されるわけではありません。新しいプロセスをフォークするには時間がかかります。このメソッドは、言語に依存せず、スケーラブルなアーキテクチャの CGI オープン拡張機能であり、その主な動作は、CGI インタプリタ プロセスをメモリ内に保持し、より高いパフォーマンスを実現することです。

FAST-CGI は、CGI インタプリタの欠点を解決するために Microsoft が提案した改善案です。 Web サーバーにリクエストが送信されると、Web サーバーは常に CGI インタプリタ プロセスをフォークしてリクエストを処理します。処理が完了すると、結果が Web サーバーに返されます。Web サーバーは結果を返し、表示します。ユーザーが同じページを再度リクエストすると、Web サーバーはリクエストを処理するために新しいプロセスをフォークするため、非効率になります (CGI が批判される主な理由)。 FAST-CGI インタプリタを使用すると、リクエスト実行後にプロセスはログアウトされませんが、改善されたプロセスは休止期間に入り、新しいリクエストを受信すると、改善されたプロセスは再び処理可能になります。 FAST-CGI は、CGI と比較してプロセスの繰り返し作成によるリソースの使用量を削減します。

プロセスとスレッド: プロセスには少なくとも 1 つ以上のスレッドがあります。

2.

通常は、Win 環境で PHP Apache の組み合わせを選択し、ISAPI モードで実行します。

Linux には通常 2 つのタイプがあります:

Apache PHP (PHP は通常 Apache のモジュールとして実行されます);

Nginx PHP (phpfast cgi の形式)つまり、php -fpm モードは高同時実行性と高負荷に対して優れたパフォーマンスを発揮するため、多くの Web サイトがこの方法を使用して環境を構築しています。

Nginx は Apache よりも構成がはるかに少ないため、人的エラーの可能性は低くなりますが、Apache は Nginx よりも安定しています。

これまで非常にナンセンスなことを述べてきましたが、重要な点は次のとおりです...

概要:

ISAPI モードで実行する場合は TS スレッドセーフ バージョンを使用してください

FAST を使用する - CGI または PHP-FPM モードで実行している場合は、NTS 非スレッドセーフ バージョンを使用してください

通常、Windows では Apache PHP の場合は TS を選択し、IIS では PHP の場合は TNS を選択します ( fast-cgi)

通常、Linux 上の Apache PHP には TS を選択し、Nginx PHP には TNS を選択します

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

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

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