>  기사  >  백엔드 개발  >  PHP 서버에서 다중 처리를 구현하는 데 사용되는 것은 무엇입니까?

PHP 서버에서 다중 처리를 구현하는 데 사용되는 것은 무엇입니까?

WBOY
WBOY원래의
2016-12-01 00:56:47882검색

PHP 백엔드는 다른 곳에서 많은 양의 데이터를 요청하여 배열 형식으로 제공합니다. 이러한 데이터는 단일 프로세스가 너무 느려서 데이터베이스에 작성해야 합니다. 이를 달성하려면 여러 프로세스를 사용하세요.
몇 가지 정보를 확인해보니 pcntl_** 일련의 기능이 눈에 띄었는데, 이것들은 명령줄에서만 실행할 수 있고 서버에서는 사용할 수 없는 것 같습니다.
있나요? 이 요구 사항을 달성할 수 있는 방법이 있나요?

꼭 가르쳐주세요!

답글 내용:

PHP 백엔드는 다른 곳에서 많은 양의 데이터를 요청하여 배열 형식으로 제공합니다. 이러한 데이터는 단일 프로세스가 너무 느려서 데이터베이스에 작성해야 합니다. 이를 달성하려면 여러 프로세스를 사용하세요.
몇 가지 정보를 확인해보니 pcntl_** 일련의 기능이 눈에 띄었는데, 이것들은 명령줄에서만 실행할 수 있고 서버에서는 사용할 수 없는 것 같습니다.
있나요? 이 요구 사항을 달성할 수 있는 방법이 있나요?

꼭 가르쳐주세요!

필요한 것은 다중 프로세스가 아닌 메시지 큐입니다

웹 서버는 요청을 받은 후 메시지를 메시지 대기열에 푸시한 다음 브라우저 결과를 직접 반환합니다(예: 처리 중임을 표시)

메시지 대기열을 소비하고, 오랜 시간 동안 실행하고, 메시지 대기열에서 메시지를 가져와 처리하고, 최종적으로 상태를 처리 완료로 변경하는 또 다른 스크립트를 만듭니다(작업 개념이 있는 경우)

이 수준에서는 멀티 프로세스가 필요한지 멀티 스레드가 필요한지는 특정 상황에 따라 다릅니다. 멀티 프로세스 또는 멀티 스레드는 IO 집약적인 작업만 개선할 수 있습니다(많은 양을 요청해야 한다는 사실로 판단). 다른 곳의 데이터) 그렇다면 꽤 일관성이 있는 것입니다.

당신을 만족시키기 위해: pcntl_fork 함수를 살펴보세요

php_swoole은 pcntl보다 더 성숙하고 안정적입니다. 또한 처리를 위해 메시지 큐에 협조하는 것이 좋습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.