swooleを使ってサーバーを作成する方法(前編)
この記事では、主に swoole 作成サーバーの 1 つを紹介します。このサーバーは、一定の参考価値があります。今、皆さんに共有します。必要な友人は、それを参照してください。
1. TCP サーバーを作成します
最初にドキュメントに従って TCP サーバーを作成します
<?php //创建服务器 参数分别是 //监听的地址 127.0.0.1 表示监听本机,0.0.0.0表示监听所有地址 //9501 端口号 这个你随便定都行只要没被占用过(netstat -an | grep 查看端口使用情况) 如果被占用就使用 命令 kill杀死进程 //SWOOLE_PROCESS 为多进程模式,一般这里不传值,默认为多进程 SWOOLE_BASE为基本模式 //SWOOLE_SOCK_TCP 也就是说创建tcp服务器 $serv=new swoole_server('127.0.0.1','9501',SWOOLE_PROCESS,SWOOLE_SOCK_TCP); //服务器设置参数 $serv->set([ 'worker_num'=>4, //worker进程数 一般为cpu数的 1-4倍 'max_request'=>10000, //worker进程在处理完n次请求后结束运行重建一个 ]); //这里 //当然还有很多设置的参数 文档传送门:https://wiki.swoole.com/wiki/page/13.html //监听连接进入事件(这里是一个闭包写法)连接后调用的函数 //$fd客户端连接的唯一标示 //$reactor_id 线程id 是一个自增数字,范围是1 ~ 1600万,fd超过1600万后会自动从1开始进行复用 $serv->on('connect', function ($serv, $fd, $reactor_id) { echo "Client: {$reactor_id} - {$fd}-Connect.\n"; }); //监听数据接收事件 //$data就是接收的数据 $serv->on('receive', function ($serv, $fd, $reactor_id, $data)) { $serv->send($fd, "Server: ".$data); echo '收到了数据'.$data; }); //监听连接关闭事件 $serv->on('close', function ($serv, $fd) { echo "Client: Close".$fd."\n"; }); //启动服务器 $serv->start();
ok php tcp.php をテストして TCP サーバーを開きます (ポートが占有されている場合は、ポートを占有しているプロセスを強制終了して、中断するには Ctrl C を使用し、一時停止するには Ctrl Z を使用します)
Telnet を開いて (別の端末を開く必要があります)、成功したかどうかをテストします。eqqeq
と入力するだけです。
TCP サーバーをもう一度見てください
これを見たときの考えを整理してみましょう:
Created TCP サーバー -> Telnet がサーバーに接続 -> TCP が接続を実行 -> Telnent が情報を送信 -> TCP が受信イベントをリッスン -> Telnent が切断 -> TCP がクローズ イベントをリッスン
質問
1.サーバーとtelnetの関係
サーバーとクライアントの関係、1台のサーバーが複数のtelnetに対応します
2.$serv- >send($fd, "Server: ".$data); echoを直接出力する場合との違いは何ですか?
send は、(自分のサーバーに接続されている) 相手にデータを送信することです。たとえば、WeChat を使用して友達とチャットし、サーバーに「.$data」を送信するとします。これは、「友達に送信されました」というメッセージを送信するのと同じであり、エコー出力の内容は自分自身専用です。工場 (CPU) 複数のワークショップ (プロセス)
ワークショップ (プロセス) には多数のワーカー (スレッド) がいます ワークショップにはトイレ (共有メモリ) があり、すべてのワーカーが共有できますが、従業員が使い終わるまで待ってから入るようにしてください通常、PHP は 1 つのプロセスで使用します。このような大規模な工場の場合、1 つのワークショップを使用するのは当然時間がかかります。効率を高めるには複数のワークショップ (マルチプロセス) と複数の従業員 (スレッド) が必要です
注:
サーバー スクリプト ファイルを変更するたびに、
再度開く必要があります
有効にするには
2. udp サーバーを作成します
1. TCP コア ucp はトランスポート層プロトコルですが、UDP サーバーは UDP サーバーとは異なります。 TCP サーバー。UDP
サーバーを起動した後、クライアントは、接続せずにサーバーによって監視されている 9502 ポートにデータ パケットを直接送信できます。2.udp は tcp
//就是把最后一个参数改为 SWOOLE_SOCK_UDP $serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
3 と同様の方法で作成されます。UDP サーバーを使用できます。Telnet の代わりに netcat -u を使用して接続し、nc インストールをテストします:
yum -y install yum -y install nc.x86_64直接使用します
nc -u 127.0.0.1 9502
4. 完全な実装//创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP
$serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
//udp没有 $serv->on connect的概念
//监听数据接收事件
$serv->on('Packet', function ($serv, $data, $clientInfo) {
$serv->sendto($clientInfo['address'], $clientInfo['port'], "Server ".$data);
var_dump($clientInfo);
});
//启动服务器
$serv->start();
nc テスト サーバー
# を出力しました。
関連する推奨事項:
Swooled Learning - Swoole の概要
のセッションストレージメカニズムを書き換えます以上がswooleを使ってサーバーを作成する方法(前編)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

エラーの原因とソリューションPECLを使用してDocker環境に拡張機能をインストールする場合、Docker環境を使用するときに、いくつかの頭痛に遭遇します...
