ホームページ  >  記事  >  バックエンド開発  >  PHPプロセス間で通信するにはいくつかの方法があります

PHPプロセス間で通信するにはいくつかの方法があります

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-09-25 15:46:534338ブラウズ

PHPプロセス間で通信するにはいくつかの方法があります

プロセス間通信とは、異なるプロセス間での情報の配布または交換です。では、異なるプロセス間には、双方がアクセスできるどのようなメディアが存在するのでしょうか?プロセスのユーザー空間は互いに独立しており、一般に相互にアクセスすることはできませんが、唯一の例外は共有メモリ領域です。ただし、システム空間は「公共の場所」であるため、カーネルがそのような条件を提供できることは明らかです。さらに重要なのは、双方がアクセスできる周辺機器です。この意味で、2 つのプロセスは、ディスク上の通常のファイルを通じて、または「レジストリ」やその他のデータベース内の特定のエントリやレコードを通じて情報を交換することもできます。これも広義にはプロセス間通信の手段ですが、通常は「プロセス間通信」にはカウントされません。なぜなら、これらの通信方式では効率があまりにも低く、プロセス間通信にはある程度のリアルタイム性が求められるからです。

関連する推奨事項: 「php チュートリアル

Linux でのプロセス間通信のいくつかの主な方法:

# #1. パイプ (Pipe) と名前付きパイプ (名前付きパイプ)

パイプは、アフィニティ関係を持つプロセス間の通信に使用できます。名前付きパイプは、パイプには名前がないという制限を克服します。パイプを使用する他のすべてのプロセスに加えて、その機能に加えて、無関係なプロセス間の通信も可能になります。

パイプには 3 つのタイプがあります:

(1) 通常のパイプ PIPE: 通常は制限があり、1 つは一方向にのみ送信できる半二重で、もう 1 つは半二重です。親プロセスと子プロセスの間でのみ使用できます。

(2) ストリームパイプ s_pipe: 最初の制限がなくなり、双方向伝送が可能になります。

(3) 名前付きパイプ name_pipe: 2 番目の制限がなくなり、無関係な多数のプロセス間で通信が可能になります。

2. シグナル

シグナルは比較的複雑な通信方法であり、特定のイベントが発生したことを受信プロセスに通知するために使用されるほか、相互通信に使用されます。プロセス通信 、プロセスはプロセス自体にシグナルを送信することもできます。初期の Unix シグナル セマンティック関数 sigal のサポートに加えて、Linux は、セマンティクスが Posix.1 標準に準拠するシグナル関数 sigaction もサポートしています (実際、この関数はBSD では、BSD は信頼性の高いシグナル メカニズムを実現するために、外部インターフェイスを統合し、sigaction 関数を使用してシグナル関数を再実装できます。

3. メッセージ キュー (メッセージ キュー)

メッセージ キューは、Posix メッセージ キュー systemV メッセージ キューを含む、メッセージのリンクされたリストです。十分な権限を持つプロセスはキューにメッセージを追加でき、読み取り権限を付与されたプロセスはキューからメッセージを読み取ることができます。メッセージ キューは、少量の情報を運ぶ信号、パイプはフォーマットされていないバイト ストリームのみを運ぶことができる、バッファ サイズが制限されているという欠点を克服します。

4. 共有メモリ

により、複数のプロセスが同じメモリ空間にアクセスできるようになり、利用可能な中で最も高速な IPC 形式となります。他の通信メカニズムの動作効率が低下することを考慮して設計されています。多くの場合、プロセス間の同期と相互排他を実現するために、セマフォなどの他の通信メカニズムと組み合わせて使用​​されます。

5. セマフォ (セマフォ)

は、主にプロセス間および同じプロセスの異なるスレッド間の同期手段として使用されます。

6. ソケット

異なるマシン間のプロセス間通信に使用できる、より一般的なプロセス間通信メカニズム。元々は Unix システムの BSD ブランチ用に開発されましたが、現在では一般的に他の Unix 系システムにも移植可能です。Linux と System V の両方のバリアントがソケットをサポートしています。

以上がPHPプロセス間で通信するにはいくつかの方法がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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