これで、スマート電球を操作したいと思います。これが私が現在Webページで操作し、データを送信してhttp経由でデータベースに保存する方法です。サーバーに接続すると、無限ループでデータベースからクライアントにデータが取得され、クライアントが 100,000 個など多数ある場合は、1 秒あたり 100,000 回データベースにクエリを実行する必要があります。サーバーが http データを受信すると、すぐにクライアントに渡されるため、データベースに保存する必要がありません。
认证高级PHP讲师
「websocket」を試してみてください また、クエリのたびにデータベースを操作することはお勧めできません。読み取ってキャッシュに保存したり、クエリごとにキャッシュから直接読み取ることもできます。 次に、別のプロセスが値の変更を監視し、データベースを変更しながらキャッシュを更新します。
メモリ内データベース Redis を検討し、それを定期的に永続化する、つまりディスクに保存することができます。
クライアントがたくさんいるのに、なぜ10万回も読まなければならないのですか?クライアントとサーバーは永続的に接続されており、マッピングはサーバーのメモリに保存されます:
http が送信されてデータベースに保存され、サーバーはデータベース情報を無限ループで読み取り、それがクライアントに送信される場合、メッセージにはクライアントの client_id が含まれている必要があります。これはブロードキャストされ、すべてのクライアントはマップを走査して送信するだけで済みます。データベースが読み取られる回数は、クライアントの数ではなく、メッセージの数にのみ関係します。
上記のデータベースは、redis や nsq などのメッセージ キューを使用して実装できます。サーバーは、データベースに保存されている場合、複数のスレッドまたはコルーチンを開くことができます。サービス 端末がクラッシュした場合、データは失われませんか?信頼性は保証できません。
「websocket」を試してみてください
また、クエリのたびにデータベースを操作することはお勧めできません。読み取ってキャッシュに保存したり、クエリごとにキャッシュから直接読み取ることもできます。 次に、別のプロセスが値の変更を監視し、データベースを変更しながらキャッシュを更新します。
メモリ内データベース Redis を検討し、それを定期的に永続化する、つまりディスクに保存することができます。
クライアントがたくさんいるのに、なぜ10万回も読まなければならないのですか?クライアントとサーバーは永続的に接続されており、マッピングはサーバーのメモリに保存されます:
リーリーhttp が送信されてデータベースに保存され、サーバーはデータベース情報を無限ループで読み取り、それがクライアントに送信される場合、メッセージにはクライアントの client_id が含まれている必要があります。これはブロードキャストされ、すべてのクライアントはマップを走査して送信するだけで済みます。データベースが読み取られる回数は、クライアントの数ではなく、メッセージの数にのみ関係します。
上記のデータベースは、redis や nsq などのメッセージ キューを使用して実装できます。サーバーは、データベースに保存されている場合、複数のスレッドまたはコルーチンを開くことができます。サービス 端末がクラッシュした場合、データは失われませんか?信頼性は保証できません。