>  Q&A  >  본문

nginx - http 데이터를 수신한 후 서버가 소켓 클라이언트에 사전에 알리도록 만드는 방법은 무엇입니까?

이렇게 스마트 전구를 작동시키려고 합니다. 현재는 웹페이지에서 작동시킨 후, http를 통해 데이터를 제출하고 데이터베이스에 저장합니다. 서버에 연결을 하게 되면 무한루프를 통해 데이터베이스에서 클라이언트로 데이터를 가져오고, 매 작업이 끝나면 sleep을 하게 되는데, 클라이언트가 10만개 정도 되면 초당 10만번씩 데이터베이스를 쿼리해야 하는데, 그래서 개선하고 싶습니다. 서버가 http 데이터를 수신하면 즉시 클라이언트에 제공되므로 데이터베이스에 저장할 필요가 없습니다.

PHP中文网PHP中文网2714일 전598

모든 응답(3)나는 대답할 것이다

  • 世界只因有你

    世界只因有你2017-05-16 17:08:59

    “websocket”을 사용해 보세요
    또한 쿼리할 때마다 데이터베이스를 작동하는 것은 권장하지 않습니다. 이를 읽어 캐시에 넣을 수 있으며 각 쿼리에 대해 캐시에서 직접 읽을 수 있습니다. 그런 다음 다른 프로세스가 값의 변화를 모니터링하고 데이터베이스를 수정하는 동안 캐시를 업데이트합니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-05-16 17:08:59

    인메모리 데이터베이스 Redis를 고려한 다음 정기적으로 유지, 즉 디스크에 저장할 수 있습니다.

    회신하다
    0
  • 某草草

    某草草2017-05-16 17:08:59

    클라이언트가 많은데 왜 10만 번 읽어야 하나요? 클라이언트와 서버는 영구적으로 연결되어 있으며 매핑은 서버의 메모리에 저장됩니다.

    으아아아

    http가 데이터베이스에 제출되고 저장되며, 서버는 무한 루프에서 데이터베이스 정보를 읽습니다. 클라이언트로 전송되는 경우 메시지에는 클라이언트의 client_id가 포함되어 있어야 합니다. 모든 클라이언트는 맵을 통과하여 보낼 수 있습니다. 데이터베이스를 읽는 횟수는 클라이언트 수가 아닌 메시지 수에만 관련됩니다.

    위에서 언급한 데이터베이스는 redis 또는 nsq와 같은 메시지 대기열을 사용하여 구현할 수 있습니다. 서버는 동시 처리를 위해 여러 스레드 또는 코루틴을 열 수 있습니다. service 단말기가 충돌하면 데이터가 손실되지 않나요? 신뢰성은 보장할 수 없습니다.

    회신하다
    0
  • 취소회신하다