nginx - http データを受信した後にサーバーがソケット クライアントに積極的に通知するようにするにはどうすればよいですか?
PHP中文网
PHP中文网 2017-05-16 17:06:59
0
3
641

これで、スマート電球を操作したいと思います。これが私が現在Webページで操作し、データを送信してhttp経由でデータベースに保存する方法です。サーバーに接続すると、無限ループでデータベースからクライアントにデータが取得され、クライアントが 100,000 個など多数ある場合は、1 秒あたり 100,000 回データベースにクエリを実行する必要があります。サーバーが http データを受信すると、すぐにクライアントに渡されるため、データベースに保存する必要がありません。

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(3)
世界只因有你

「websocket」を試してみてください
また、クエリのたびにデータベースを操作することはお勧めできません。読み取ってキャッシュに保存したり、クエリごとにキャッシュから直接読み取ることもできます。 次に、別のプロセスが値の変更を監視し、データベースを変更しながらキャッシュを更新します。

いいねを押す +0
洪涛

メモリ内データベース Redis を検討し、それを定期的に永続化する、つまりディスクに保存することができます。

いいねを押す +0
某草草

クライアントがたくさんいるのに、なぜ10万回も読まなければならないのですか?クライアントとサーバーは永続的に接続されており、マッピングはサーバーのメモリに保存されます:

リーリー

http が送信されてデータベースに保存され、サーバーはデータベース情報を無限ループで読み取り、それがクライアントに送信される場合、メッセージにはクライアントの client_id が含まれている必要があります。これはブロードキャストされ、すべてのクライアントはマップを走査して送信するだけで済みます。データベースが読み取られる回数は、クライアントの数ではなく、メッセージの数にのみ関係します。

上記のデータベースは、redis や nsq などのメッセージ キューを使用して実装できます。サーバーは、データベースに保存されている場合、複数のスレッドまたはコルーチンを開くことができます。サービス 端末がクラッシュした場合、データは失われませんか?信頼性は保証できません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート