응용 시나리오 소개
하드웨어 장치(위치 확인 장치)와 연결 및 통신
#🎜 🎜#IM 시스템(생방송 페이지의 채팅 커뮤니케이션용) (추천 학습:swoole 비디오 튜토리얼 )
시나리오 1 - 실시간 수집 위치 데이터 및 실시간 출력 (Didi 운전자의 주행 궤적 예시)
설명:
은 실제- 모든 측위 장치의 시간 수신은 지도에 표시됩니다. 🎜#web1 서버에 연결된 사용자 1, 2, 3 web1이 정보를 방송할 때 사용자 1, 2, 3만 방송할 수 있습니다. 사용자 4, 5, 6은 방송할 수 없습니다. web2에 접속했다고 가정하면, 사용자 1이 보내는 메시지는 web1 서버의 사용자들만 볼 수 있고, web2의 모든 사용자는 이를 받을 수 없으며, 100명의 사용자, 100개의 장치는 초당 한 개의 데이터를 업로드합니다. 각 사용자에게 실시간으로, 즉 초당 100*100 = 1W씩 방송해야 하므로 초당 데이터를 요약해서 모든 사용자에게 방송하는 등이 가능합니다. #🎜 🎜#
#🎜 🎜#시나리오 2 - 위치 확인 장치만 데이터베이스에 수집
지침: 모든 위치 확인 장치에서 업로드한 데이터를 데이터베이스에 저장해야 합니다. 둘째, 저는 개인적으로 swoole의 작업 기능을 사용합니다(task_worker 풀에 비동기 작업을 전달합니다. 이 기능은 비차단이며 작업자 프로세스 수도 구성할 수 있습니다). 그런 다음 인터페이스를 호출하여 데이터베이스에 저장합니다 #🎜🎜 ##🎜 🎜#서버 메모리 알람 문제
이유: swoole_server->task 함수에 있습니다공식 소개는 다음과 같습니다. 작업의 최하위 계층은 전체 메모리를 소비하지 않는 Unix 소켓 파이프 통신을 사용합니다. 단일 프로세스의 읽기 및 쓰기 성능은 100만/초에 달할 수 있습니다. 서로 다른 프로세스는 서로 다른 파이프라인을 사용하여 통신하므로 여러 코어의 사용을 극대화할 수 있습니다.그러나 작업이 프로그램 인터페이스를 호출하는 것이라면 네트워크 지연으로 인해 추가된 작업이 소비된 작업보다 커지면 메모리 사용량이 계속 증가하여 서버의 메모리가 가득 차게 됩니다. .
해결책: 작업에 들어오는 메시지의 빈도를 제어하고 자신의 비즈니스 시나리오에 따라 이 시간과 지연 가능 여부를 정의하고 모든 데이터를 1초 이내에 요약한 다음 프로그램 인터페이스를 호출할 수 있습니다. (redis를 사용하여 요약할 때 개인용) 인터페이스를 호출하지 않고 데이터베이스에 직접 저장하는 것이 가장 좋습니다
Scenario-IM System
공식 github을 참고하세요: webim system.# 🎜🎜#
공식 위키: swoole Framework wikiBenefits
encapsulates 데이터베이스의 모델 클래스와 데이터베이스의 ORM 인터페이스# 🎜🎜#Redis의 캡슐화는 다중 인스턴스 액세스를 달성할 수 있습니다
프레임워크에는 로그, (저는 로그만 사용했습니다)
Webim에 공식적으로 악마가 있으니 참고하세요
위 내용은 스울은 어디에 사용되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!