PHP의 멀티스레딩: 가능합니까?
PHP에서 멀티스레딩이 가능한지에 대한 질문은 오랫동안 제기되어 왔습니다. 운영 체제에서 여러 PHP 인스턴스를 강제하는 것에 대한 과거 제안. 그러나 이 접근 방식은 메모리 활용 및 프로세스 종료 문제를 야기했습니다.
pthread 소개
답은 강력한 객체 지향 API를 제공하는 pthreads 확장에 있습니다. PHP의 멀티스레딩. 이 확장은 PHP 7.2에서 사용할 수 있으며 웹 서버 환경에서는 멀티스레딩이 지원되지 않으므로 CLI 기반 애플리케이션이 필요합니다.
pthread 사용
pthreads 확장은 다음과 같은 클래스를 제공합니다. Thread, Workers 및 Threaded 개체로 스레드를 관리하고 동시에 작업을 실행하며 동기화합니다. 실행.
간단한 예
다음 코드 조각을 고려하세요.
class AsyncOperation extends Thread { public function run() { // Long-running operation } } $stack = array(); foreach (range("A", "D") as $i) { $stack[] = new AsyncOperation($i); } foreach ($stack as $t) { $t->start(); }
이 코드는 여러 스레드를 생성하고 동시에 실행하여 타임스탬프와 작업 상태.
실제 예
PHP에서 멀티스레딩을 실제로 적용하는 방법은 비동기식 웹 요청을 만드는 것입니다.
class AsyncWebRequest extends Thread { public function run() { $this->data = file_get_contents($this->url); } } $g = new AsyncWebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10)); $g->start(); while ($g->isRunning()) { echo "."; usleep(100); } if ($g->join()) { printf("Request took %f seconds to finish receiving %d bytes\n", microtime(true) - $t, strlen($g->data)); }
이 코드는 비동기식 웹 요청을 시작하고 프로세스 중에 점을 인쇄하며 시간을 기록합니다. 답변을 받아보았습니다.
결론
으로 pthreads 확장인 PHP는 멀티스레딩을 위한 강력한 메커니즘을 제공하여 개발자가 동시에 작업을 실행하고 CLI 기반 애플리케이션의 성능을 향상시킬 수 있도록 해줍니다.
위 내용은 PHP는 정말 멀티스레드를 할 수 있나요? pthreads 솔루션 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!