この記事では主に Swoole の高性能 PHP フレームワークを紹介します。これは、特定の参考値があります。必要な友達は参考にしてください。
私は以前、強力なパフォーマンスを備えた Nodejs を学習しました。
今年の目標はワークマンをもっと知ってスウールを使いこなすことです。以前はワークマンを使用してチャットシステムを処理していましたが、作業はウィンドウ上で実行する必要がありました。 そのため、性能面ではワークマンの利点が十分に活かされていません。
今月、プロジェクトのニーズに合わせて、swooleを使用してWeChatミニプログラムモールの顧客サービスチャットシステムのインターフェースを開発しました。
WeChat が提供する公式インターフェイスを通じて、顧客とカスタマー サービスの間でチャットします。
swoole を使用して、WebSocket を簡単に処理し、オンラインでチャットします。
クライアントがソケットに接続すると、システムは個々のクライアントを識別する fd を割り当てます。
ログインすると、カスタマーサービス側はカスタマーサービスIDを含むユーザーの情報をswooleに送信できます。
指定された顧客またはグループにメッセージを送信するには、顧客サービス ID と対応する FD を Redis に保存します。ソケットを開いてカスタマー サービスに送信するときは、Redis カスタマー サービスの対応するキーを読み取って、指定したユーザーに送信するだけです。
現在の相談量は多くありませんが、コードの寿命を延ばすために、カスタマーサービスがメッセージを送信するときとメッセージを受信するときにタスクの非同期が追加されます。お問い合わせの量が多い場合でも、swooleなら安心してご対応いただけます。
チャットは記事を書くのとは異なります。 1 秒あたり数万件の問い合わせがある可能性があるため、システムをスムーズにし、不必要に時間のかかる操作を実行するために、swoole はログの読み取りと書き込みを支援する非同期読み取りと書き込みを提供します。
function log_text($data){ swoole_async_writefile(__DIR__ . '/log.txt', $data.$data."\n\n", function($filename) { }, FILE_APPEND); }
オブジェクト指向クラス
<?phpclass WebsocketTest { public $server; public function __construct() { $this->server = new swoole_websocket_server("0.0.0.0", 7272); $this->server->on('open',[$this,'open']); $this->server->on('message', [$this,'message']); $this->server->on('close', [$this,'close']); $this->server->on('request', [$this,'request']); $this->server->on('task',[$this,'task']); $this->server->on('finish',[$this,'finish']); $this->server->set([// 'daemonize'=>true, 'task_worker_num'=>10, ]); $this->server->start(); } //@异步接受数据, 发送数据 function finish($server, $task_id,$data){ $server->push($data['fd'],$data['data']); } //@异步处理数据 function task($server, $task_id, $from_id, $data){ //接受到数据之后处理复杂逻辑处理 sleep('5'); $data['data'] = '服务器发送'.$data['data']; $server->finish($data); } function request($request, $response) { foreach ($this->server->connections as $fd) { $this->server->push($fd, $request->get['message']); } } function close($ser, $fd) { echo "client {$fd} closed\n"; } function message(swoole_websocket_server $server, $frame) { $data = [ 'fd'=>$frame->fd, 'data'=>$frame->data, ]; $server->task($data); } function open( $server, $request) { } }new WebsocketTest();
以上がSwoole 高性能 PHP フレームワークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。