ホームページ  >  記事  >  バックエンド開発  >  PHP は Swoole に基づいた単純な HTTP サーバーを実装します

PHP は Swoole に基づいた単純な HTTP サーバーを実装します

WBOY
WBOYオリジナル
2016-06-20 12:41:06952ブラウズ

Swoole の公式定義を引用します:

PHP语言的异步、并行、高性能网络通信框架,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网、智能家居等领域。使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

ここでは、単純な HTTP サーバーを作成するための swoole の 2 つの API について簡単に説明します。

swoole_server

swoole_server API を使用して HTTP サーバーを構築する 4 つのステップ:

  1. サーバー オブジェクトを構築する
  2. 実行時パラメータを設定する
  3. イベントコールバック関数を登録します
  4. サーバーを起動します

コードを直接反映し、新しい server.php を作成します:

<?php//1.构建Server对象$serv = new swoole_server("0.0.0.0", 9501);//2.设置运行时参数$serv->set(array(    'worker_num' => 8,    'daemonize' => 0,    'max_request' => 10000,    'dispatch_mode' => 2,    'debug_mode'=> 1,));//3.注册事件回调函数$serv->on('Receive', function($serv, $fd, $from_id, $data){    $respData='<h1>Hello Swoole.</h1>';    response($serv,$fd,$respData);//封装并发送HTTP响应报文});//4.启动服务器$serv->start();

HTTP 応答メッセージをカプセル化するにはどうすればよいですか?まず、以下に示すように、HTTP 応答メッセージの構造を知る必要があります。

応答メッセージの構造がわかっている場合、応答メッセージは次のようになります。

HTTP/1.1 200Server:SwooleServerContent-Type:text/html;charset=utf8Content-Length:13<h1>Hello Swoole.</h1>

コードの実装。

/*** 发送内容* @param \swoole_server $serv* @param int $fd* @param string $respData* @return void*/function response($serv,$fd,$respData){    //响应行    $response = array(        'HTTP/1.1 200',    );    //响应头    $headers = array(        'Server'=>'SwooleServer',        'Content-Type'=>'text/html;charset=utf8',        'Content-Length'=>strlen($respData),    );    foreach($headers as $key=>$val){        $response[] = $key.':'.$val;    }    //空行    $response[] = '';    //响应体    $response[] = $respData;    $send_data = join("\r\n",$response);    $serv->send($fd, $send_data);}

これで、Hello Swoole. に応答する単純な HTTP サーバーが完成しました。完全なコード: ここに

(Gist にアクセスできませんか? ローカルホストファイルを設定します: 192.30.252.141 gist.github.com)

php server.php を実行し、ブラウザ http://127.0.0.1:9501/ でアクセスします。もちろん、フロントエンド プロキシとして Nginx を使用することが多く、www.server.com をセットアップし、ホスト マッピングをローカルに設定してから、ドメイン名。 Nginx の設定: ここにあります

注: 応答メッセージの形式が正しくない場合、ブラウザ ページはリダイレクトを続け、リクエストが返されるのを待ちます...

その後、swoole_http_server がありますを使用すると、HTTP サーバーのコードがさらに簡単になります。

swoole_http_server

<?php$http = new swoole_http_server("127.0.0.1", 9501);$http->on('request', function ($request, $response) {    $html = "<h1>Hello Swoole.</h1>";    $response->end($html);});

はい、ほんの数行のコードで実装されています。応答メッセージをカプセル化する必要はもうありません。 swoole_http_server は swoole_server を継承しており、swoole の組み込み Http サーバーのサポートです。数行のコードで、非同期のノンブロッキング マルチプロセス Http サーバーを作成できます。

注意: swoole_http_server の Http プロトコルのサポートは不完全であるため、アプリケーション サーバーとしてのみ使用することをお勧めします。そして、フロントエンドにプロキシとして Nginx を追加します

参考

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