検索
ホームページバックエンド開発PHPの問題なぜphpはソケットに適していないのでしょうか?

低レベル プログラマ以外の場合、ソケットの内部実装メカニズムを深く理解することは非常に困難です。ソケットは、プロセス通信を実装するためにオペレーティング システムによってカプセル化された一連の関数であることを理解するだけで十分です。それを作成して呼び出すだけで十分です。

なぜphpはソケットに適していないのでしょうか?

PHP の言語特性と位置付けにより、PHP はソケット クライアントにのみ適しており、ソケット サーバーには適していません。

ソケットは主に下位層とネットワーク サービスの開発を指向しているため、サーバー側は一般的に C や Java などの言語で実装されます。問題 (同時実行性、ブロッキングなど) に対する成熟した完全なソリューションもありますが、PHP は明らかにこのアプリケーション シナリオには適していません。 (推奨される学習: PHP ビデオ チュートリアル )

実際、PHP はソケットを通じて MySQL データベースを操作します。これはまさに、ソケットが基盤となるプロトコルを保護し、ネットワーク サービス間の相互接続を実現するためです。それらはシンプルになります。

従来のサーバーサイド言語で実装されたソケットに加えて、HTML5 の普及に伴い、ブラウザ クライアントに実装された WebSocket も徐々に登場しており、これは注目に値します。FlashSocket も優れたソリューションです。 。

クライアント側でソケットを操作するには、fsockopen、socket_create、stream_socket_clientなどの関数を使用できますが、PHP5の場合はstream_socket_clientを使用することを推奨します。

ソケット対話型アプリケーションの例: ソケットを使用したフォームの送信

新しい test.php ファイルを作成し、http:// に送信します。 demo.com/index .php?id=1 フォーム データを送信します。コードは次のとおりです:

<?php
$data = array(&#39;comment&#39;=>&#39;this is a robot comment&#39;);
$data = http_build_query($data);
 
$out = "POST http://demo.com/index.php?id=1 HTTP/1.1\r\n";  // 通过POST方式发送数据
$out .= "Host: demo.com\r\n";
$out .= "Content-type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
$out .= "Content-length: ".strlen($data)."\r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:48.0) Gecko/20100101 Firefox/48.0"."\r\n";
$out .= "Connection: close"."\r\n"."\r\n";    // 注意:此处有两个 \r\n
 
$out .= $data."\r\n";   // 正文数据
 
$fp = fsockopen("demo.com", 80, $errno, $errstr, 30);  // 创建socket客户端连接
 
// $fp = stream_socket_client("tcp://demo.com:80", $errno, $errstr, 30);  推荐这种写法
 
fwrite($fp, $out);    // 向服务器发送数据
 
while (!feof($fp)) {
    echo fgets($fp, 1280);    // 读取服务器响应的数据
}
fclose($fp);  // 关闭socket连接
?>

次の点に注意する必要があります:

fsockopen の最初のパラメータには、IP アドレスを使用することもできます。SSL などを使用する場合を除き、 http:// 文字列を含めないでください。

リクエスト ヘッダーは、必ずしもすべてのヘッダー フィールドを含める必要はなく、一般的に必要なのは、いくつかのコアヘッダー

最後のヘッダーでは、Connection の後に 2 つの改行があります

エンコードの問題に注意してください

以上がなぜphpはソケットに適していないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール