PHP 백엔드는 다른 곳에서 많은 양의 데이터를 요청하여 배열 형식으로 제공합니다. 이러한 데이터는 단일 프로세스가 너무 느려서 데이터베이스에 작성해야 합니다. 이를 달성하려면 여러 프로세스를 사용하세요.
몇 가지 정보를 확인해보니 pcntl_** 일련의 기능이 눈에 띄었는데, 이것들은 명령줄에서만 실행할 수 있고 서버에서는 사용할 수 없는 것 같습니다.
있나요? 이 요구 사항을 달성할 수 있는 방법이 있나요?
꼭 가르쳐주세요!
PHP 백엔드는 다른 곳에서 많은 양의 데이터를 요청하여 배열 형식으로 제공합니다. 이러한 데이터는 단일 프로세스가 너무 느려서 데이터베이스에 작성해야 합니다. 이를 달성하려면 여러 프로세스를 사용하세요.
몇 가지 정보를 확인해보니 pcntl_** 일련의 기능이 눈에 띄었는데, 이것들은 명령줄에서만 실행할 수 있고 서버에서는 사용할 수 없는 것 같습니다.
있나요? 이 요구 사항을 달성할 수 있는 방법이 있나요?
꼭 가르쳐주세요!
필요한 것은 다중 프로세스가 아닌 메시지 큐입니다
웹 서버는 요청을 받은 후 메시지를 메시지 대기열에 푸시한 다음 브라우저 결과를 직접 반환합니다(예: 처리 중임을 표시)
메시지 대기열을 소비하고, 오랜 시간 동안 실행하고, 메시지 대기열에서 메시지를 가져와 처리하고, 최종적으로 상태를 처리 완료로 변경하는 또 다른 스크립트를 만듭니다(작업 개념이 있는 경우)
이 수준에서는 멀티 프로세스가 필요한지 멀티 스레드가 필요한지는 특정 상황에 따라 다릅니다. 멀티 프로세스 또는 멀티 스레드는 IO 집약적인 작업만 개선할 수 있습니다(많은 양을 요청해야 한다는 사실로 판단). 다른 곳의 데이터) 그렇다면 꽤 일관성이 있는 것입니다.
당신을 만족시키기 위해: pcntl_fork 함수를 살펴보세요
php_swoole은 pcntl보다 더 성숙하고 안정적입니다. 또한 처리를 위해 메시지 큐에 협조하는 것이 좋습니다