ホームページ  >  記事  >  バックエンド開発  >  PHPの通信プロトコルとプロセス、スレッドの基本的な説明

PHPの通信プロトコルとプロセス、スレッドの基本的な説明

不言
不言オリジナル
2018-08-14 14:47:482037ブラウズ

この記事は、PHP の通信プロトコル、プロセス、スレッドについての基本的な説明を提供します。一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。

PHP に関する基本的な情報をまとめました。ぜひお気軽にご覧ください。

通信プロトコル

ネットワーク通信プロトコルは、ネットワークの汎用言語です。さまざまなオペレーティング システムとさまざまなハードウェア アーキテクチャを接続するインターネットの通信サポートを提供します。これは汎用言語です。ネットワークの言語。

#アプリケーション層

名前コメント ##HTTPDNSFTP#SFTP#SSH ファイル転送プロトコル安全なファイル転送プロトコルSecure Shell通信層
ハイパーテキスト転送プロトコル ハイパーテキスト転送プロトコル、Web ページの表示
ドメイン ネーム システム ドメイン ネーム システム
ファイル転送プロトコルファイル転送プロトコル
SSH

名前コメントTCP伝送制御プロトコル スリーウェイ ハンドシェイク伝送プロトコル
UDP
##ネットワーク層
名前

Comments インターネット プロトコル
IP
ICMP インターネット コントロールメッセージ プロトコル。主にエラー レポートを送信するためのルーティングに使用されます

HTTP

HTTP は、Hyper Text Transfer Protocol の略称です。この開発は、World Wide Web Consortium と Internet Engineering Task Force (IETF) との協力の成果であり、最終的に一連の RFC をリリースしました。RFC 1945 は HTTP/1.0 バージョンを定義しています。これらの中で最も有名なのは RFC 2616 です。 RFC 2616 は、現在一般的に使用されているバージョンである HTTP 1.1 を定義しています。

HTTP プロトコル (HyperText Transfer Protocol、ハイパーテキスト転送プロトコル) は、WWW サーバーからローカル ブラウザにハイパーテキストを転送するために使用される転送プロトコルです。これにより、ブラウザの効率が向上し、ネットワーク送信が削減されます。これにより、コンピュータがハイパーテキスト ドキュメントを正確かつ迅速に送信することが保証されるだけでなく、ドキュメントのどの部分が送信されるか、コンテンツのどの部分が最初に表示されるか (グラフィックの前のテキストなど) なども決定されます。

HTTP は、リクエストとレスポンスで構成されるアプリケーション層プロトコルであり、標準のクライアント/サーバー モデルです。 HTTP はステートレス プロトコルです。

TCP/IP プロトコル スタック内の位置

HTTP プロトコルは通常、TCP プロトコルの上に置かれ、場合によっては TLS または SSL プロトコル層の上に置かれます。 HTTPS と呼ばれることが多いです。次の図に示すように、

PHPの通信プロトコルとプロセス、スレッドの基本的な説明

デフォルトの HTTP ポート番号は 80、HTTPS ポート番号は 443 です。

HTTP 要求応答モデル

HTTP プロトコルは常にクライアントからの要求を開始し、サーバーは応答を送り返します。以下の図を参照してください。

PHPの通信プロトコルとプロセス、スレッドの基本的な説明

これにより、HTTP プロトコルの使用が制限され、クライアントが開始しない場合にサーバーがクライアントにメッセージをプッシュすることができなくなります。お願いです。
HTTP プロトコルはステートレス プロトコルであるため、このリクエストと同じクライアントの最後のリクエストの間には対応関係がありません。

HTTP リクエスト

クライアントからサーバーに送信されるリクエスト メッセージには、次の形式が含まれます。

  • リクエスト ライン (リクエスト ライン)

  • リクエスト ヘッダー (header)

  • 空行とリクエスト データの 4 つの部分で構成されます。

Get リクエストの例

GET /562f25980001b1b106000338.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept image/webp,image/*,*/*;q=0.8Referer http://www.imooc.com/Accept-Encoding gzip, deflate, sdchAccept-Language zh-CN,zh;q=0.8

POST リクエストの例

POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley

パート 1: リクエスト行。最初の行はリクエスト タイプを示し、http1.1バージョン 。
パート 2: リクエスト ヘッダー、2 行目から 6 行目。
3 番目の部分: 空白行、7 行目の空白行。
パート 4: データの要求、8 行目。

HTTP レスポンス

通常の状況では、サーバーはクライアントから送信されたリクエストを受信して​​処理した後、HTTP レスポンス メッセージを返します。
HTTP レスポンスも 4 つの部分で構成されます

  • ステータス行

  • メッセージ ヘッダー

  • #空の行と応答本文。

HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8<!--body goes here-->
ステータス行の最初の部分は、HTTP プロトコルのバージョン番号、ステータス コード、ステータス メッセージの 3 つの部分で構成されます。

メッセージ ヘッダーの 2 番目の部分: クライアントが使用する追加情報を記述するために使用されます。
空白行の 3 番目の部分: メッセージ ヘッダーの後の空白行は必須です。
の 4 番目の部分応答テキスト: サーバーはクライアントのテキスト メッセージを返します。

HTTP ステータス コード

ステータス コードは 3 桁の数字で構成されます。最初の数字は応答カテゴリを定義し、5 つのカテゴリに分類されます

ステータスコメント##1xx2xx3xx4xx5xx

プロセスとスレッド

プロセスの概念は、オペレーティング システムの構造の基礎です。 Multics の設計者がこの専門用語を初めて使用したのは 1960 年代で、宿題よりも一般的な用語です。プロセスの定義は以下の通りです。

  • 実行中のプログラム。

  • コンピュータ上で実行されるプログラムのインスタンス。

  • プロセッサに割り当てて実行できるエンティティ。

  • 実行の単一の連続スレッド、現在の状態、および関連するシステム リソースのセットによって記述されるアクティビティの単位。

プロセスはなぜ設計されるのですか?

さまざまなアクティビティを調整できるシステム ソフトウェアを設計するのは非常に困難です。

常に多数のジョブが実行されており、各ジョブには順番に実行する必要がある多くのステップが含まれているため、時間のシーケンスの組み合わせを分析することはできません。すべてのアクティビティを調整および協力するためのシステムレベルの方法が存在しない場合、プログラマは、オペレーティング システムによって制御される環境の理解に基づいて、独自のその場限りの方法を採用する必要があります。ただし、この方法は、時系列でまれにエラーが発生する場合にのみ発生するため、特にプログラミングにおける小さなエラーに対して非常に脆弱です。

これらのエラーをアプリケーション ソフトウェア エラーやハードウェア エラーと区別する必要があるため、診断が困難になる場合があります。エラーが発生した正確なシナリオを特定することが難しいため、エラーをタイムリーに検出することも原因を特定することも困難です。一般的に、このタイプのエラーの主な理由は次の 4 つです。

  • 不正な同期

  • 相互排除の失敗。

  • プログラムの動作が不確実である

  • デッドロック

これらの問題を解決するにはシステムが必要です レベルメソッドプロセッサ内のさまざまなプログラムの実行を監視します。プロセスの概念がその基礎となります。

したがって、このプロセスは 3 つの部分から構成されていると考えることができます。

  • 実行できるプログラム

  • プログラムとはニーズ 関連データ

  • プログラムの実行コンテキスト

プロセスの作成

伝統的に、オペレーティング システムがプロセスを作成する方法プロセスはユーザーに悪影響を及ぼし、アプリケーションは透過的ですが、これは現代のオペレーティング システムでも一般的です。ただし、あるプロセスが別のプロセスの作成をトリガーできるようにすると便利です。

たとえば、プログラム プロセスは、アプリケーションによって生成されたデータを受け入れ、後の分析に適した形式にデータを編成する別のプロセスを生成できます。新しいプロセスはアプリケーションと並行して実行され、新しいデータが利用可能になるとアクティブ化されます。

このスキームは、アプリケーションの構築に非常に役立ちます。たとえば、サーバー プロセス (プリント サーバー、ファイル サーバーなど) は、処理するリクエストごとに新しいプロセスを生成できます。オペレーティング システムが別のプロセスからの明示的な要求に応じて新しいプロセスを生成するとき、このアクションはプロセス フォークと呼ばれます。

プロセスが別のプロセスをフォークする場合、前のプロセスは親プロセスと呼ばれ、生成されたプロセスは子プロセスと呼ばれます。一般的な状況では、関連するプロセスにはエージェント間の通信と協力が必要です。プログラマーにとって、コラボレーションは非常に困難な作業です。

スレッドとは

スレッドはプロセスの実行ストリームです。スレッドはシステム リソースを割り当てることはできません。プロセスの一部であり、プロセスよりも小さな独立した実行単位です。

プロセスとスレッドの関係

プロセスは土地 (システム リソース) を持つ家主のようなもので、スレッドはテナント (スレッド、ファーミング プロセスを実行する) のようなものです。各家主 (プロセス) には、動作するテナント (スレッド) が 1 つだけ必要です。

プロセス - リソース割り当ての最小単位で、比較的堅牢であり、クラッシュは通常、他のプロセスに影響を与えませんが、プロセスの切り替えはリソースを消費し、効率が低下します。

スレッド - プログラム実行の最小単位。独立したアドレス空間はありません。1 つのスレッドが停止するとプロセス全体が停止する可能性がありますが、リソースが節約され、スイッチング効率が高くなります。

PHP の一般的なプロセスとスレッド

  • Web アプリケーションでは、php にアクセスするたびに PHP プロセスが作成され、もちろん、少なくとも 1 つの PHP プロセスも作成されます。 PHP スレッド

  • PHP はマルチプロセス プログラミングに pcntl を使用します

  • #PHP はマルチスレッド プログラミングに pthread を使用します

  • nginx にはプロセスごとに 1 つのスレッドしかなく、各スレッドは複数のクライアントからのアクセスを処理できます

  • php-fpm はマルチプロセス モデルを使用し、各プロセスには 1 つのスレッドしかありませんスレッドは 1 つのクライアント アクセスのみを処理できます

  • Apache は、使用される SAPI に応じて、マルチプロセス モデルまたはマルチスレッド モデルを使用します

関連する推奨事項:

AS3 と PHP の間で通信する 5 つの方法 (HTTP プロトコルに基づく)_PHP チュートリアル

## PHP と Linux プロセス間の通信


##PHP の Http プロトコル ポスト リクエスト パラメーター、php プロトコル ポスト リクエスト_PHP チュートリアル

表示情報 -- リクエストが受信され、処理が継続されていることを示します。
成功 -- リクエストが正常に受信され、理解され、受け入れられたことを示します
リダイレクト- - リクエストを完了するにはさらに操作を実行する必要があります
クライアント エラー -- リクエストに構文エラーがあるか、リクエストを実行できません満たされました
サーバー側エラー -- サーバーは法的要求を満たせませんでした

以上がPHPの通信プロトコルとプロセス、スレッドの基本的な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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