swoole拡張機能を使ってオンラインチャットのサンプルを書いているときに問題が発生したので、いろいろ調べたので記録します。ここ。
swoole_server のインターフェース文書を見ると、コールバック登録インターフェースに明確なコメントがあります:
リーリー
swoole_http_server と swoole_server はほぼ同じですが、swoole_http_server では接続インターフェースと受信インターフェースが呼び出されず、それに応じて要求インターフェースが呼び出されます。
チャットの小さな例では、swoole_websocket_server が使用されています。テストを通じて、swoole_websocket_server の受信インターフェイスは、ワーカー内で長い接続サービスとして呼び出されます。
close と connect のコールバックは引き続き必要です。たとえば、オンライン ブロードキャスト通知とオフライン ブロードキャスト通知を適切に実装するには、これら 2 つの対応するインターフェイスへのコールバックが必要です。したがって、公式は間違いなくコールバックをサポートしています。swooleのバージョンアップのお知らせでようやく問題が判明しました。
Swoole-1.7.16バージョンがリリースされました、バグ修正バージョン:
swoole_server->tick および swoole_timer_tick 関数を追加
gzip 圧縮のための http サーバー サポートを追加
swoole_table->incr/decr アトミック インクリメント/デクリメント メソッドを追加
open_eof_split 設定を追加、EOF 検出を使用して自動下請けをサポート
サーバー統計項目 request_count を追加およびworker_request_count
サーバー接続イテレータを追加します。foreachを使用してサーバーのすべての接続をトラバースできます
httpサーバーリクエストのquery_stringを追加します
httpサーバーのマルチパートフォームのサポートを追加し、ファイルをアップロードします
onReceiveデータマージエラーのバグを修正します
のバグを修正しますswoole_server->addtimer と Tick timer の間の競合
低バージョンの Linux で Accept がブロックを設定しない問題を修正
Accept が失敗し、接続が多すぎてログを繰り返し出力する問題を修正
task_max_request パラメーターが無効である問題を修正
修正swoole_client の waitall パラメータ無効化の問題
swoole_table の無限ループのバグを修正
WebSocket サーバーの onOpen コールバック関数の 2 番目のパラメータが $fd から $request オブジェクトに調整されました
Http サーバーは空の本文応答の送信を許可します
swoole_websocket_server->send メソッド
BASE モードのサポート 任意の FD にデータを送信
Dispatch_mode = 1、3 に設定し、onClose/onConnect イベント コールバックを閉じる Worker プロセスがシステム以外の予約信号を設定できるようにする
オブジェクトのリソース属性に対する swoole の根本的な依存関係を改善し、ポインターを直接読み取ります。 パフォーマンスを向上させます。
ハートビート スレッドがレガシー接続を強制的に強制終了できない問題を解決します。
タスク分散の効率を向上させるために、dispatch_mode=3 モードを最適化します。
ワーカー配置モードの問題です。プリエンプション モードとポーリング モードでは、これら 2 つのコールバック インターフェイスは呼び出されなくなります。固定モードでは、各クライアントのデータ パケットは固定ワーカー プロセスによって処理されるため、このクライアントに属する一部のプライベート情報をワーカー プロセスに保存したり、頻繁に読み書きされるデータの一部をキャッシュしたりできます。これは、 Erlangのプロセス辞書を操作します。このように、クライアントはオフラインになったときにいくつかのクリーニング操作を行う必要があります。オンライン初期化操作。したがって、このモデルは非常に意味があり、必要です。固定モードは、各クライアントのロジックが比較的均一である状況を処理するのに適しています。
http://www.bkjia.com/PHPjc/1094275.html
。