swoole 拡張機能を使用してオンライン チャットの例を作成したときに問題が発生しました。多くの情報を確認したので、ここに記録します。
swoole_server のインターフェース文書を見ると、コールバック登録インターフェースに明確なコメントがあります:
* swoole_server->on & swoole_http_server->on are the same except swoole_http_server : * - not accepting onConnect/onReceive callback accept events onRequest
swoole_http_server と swoole_server は一般に同じですが、接続インターフェースと受信インターフェースは swoole_http_server では呼び出されず、それに応じて request インターフェースが呼び出されます。
小規模チャットの例では、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 番目のパラメータは $ から調整されます$request オブジェクトへの fd
HTTP サーバーは空のボディ応答の送信を許可します
swoole_websocket_server->send メソッドを無効にします
BASE モードは任意の FD へのデータ送信をサポートします
dispatch_mode = 1, 3 を設定し、onClose/onConnect イベント コールバックを閉じます ワーカープロセスが非システム予約信号を設定できるようにします
オブジェクトリソース属性に対する swoole の根本的な依存関係を削除して、ポインターを直接読み取り、パフォーマンスを向上させます
ハートビートスレッドがレガシー接続を強制的に強制終了できない問題を解決します
Dispatch_mode=3 モードを最適化して、タスク割り当ての効率を改善します
上記は、PHP の swoole 拡張機能で onclose および onconnect インターフェイスが呼び出されない問題を紹介しており、関連する内容も含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。