Top

php thread 예제

Threaded 클래스에는 run() 메서드가 특정 스레드에서 지정된 시간에 실행되는지 여부를 확인할 수 있는 또 다른 유용한 방법인 isRunning과 같은 중요한 상태 검색 메서드가 포함되어 있습니다. 많은 작업을 실행할 때 스레드를 재사용하는 또 다른 방법은 풀 클래스를 통해 스레드 풀을 사용하는 것입니다. 스레드 풀은 작업 트랜잭션을 동시에 실행할 수 있도록 작업자 그룹에 의해 구동되며, 여기서 동시성 계수(풀에서 실행되는 스레드 수)가 풀 생성 시 지정됩니다. 동기화를 사용하지 않으면 출력이 결정적이지 않습니다. 제어된 액세스 없이 단일 변수에 쓰는 여러 스레드로 인해 업데이트가 손실되었습니다. 이 작업을 고려하십시오. 가능한 한 빨리 완료해야 하는 작업 목록이 있습니다. PHP에는 이 목적을 위한 몇 가지 해결책이 있는데, 이 에 대해 다루지 않을 것입니다. 이 문서는 pthreads 확장에 대해서만 입니다. 이 작업을 수행하려면 작곡가와 다른 것을 사용하여이 패키지를 설치하기만하면됩니다. 확장이 설치되어 있는지 여부를 확인합니다.

확장이 설치된 경우 확장을 사용합니다. 그렇지 않으면 폴리채우기 클래스가 사용되므로 하나 이상의 스레드를 시작할 수 있습니다. 나는 몇 시간 동안 멋진 “pthreads”PECL 확장을 가로 질러 왔다. 오늘 밤, 나는 그것을 기회를 줄 계획했다. 무엇이 호기심을 불러일으켰는가? 글쎄, 내가 그들을 인용하자 – pthreads 확장은 미친 좋은, 그것은 잘 유지, 그것은 PHP7와 이미 호환하고 새로운 버전이 나왔다 – 이 문서의 예에서 사용되는 버전은 2.0.10, 최신은 3.0.8 PHP7에 대한). 데이터를 병렬로 처리하는 경우 다중 처리는 완벽하게 유효한 솔루션이 될 수 있습니다. 그것은 비록 멀티 스레딩에 대 한 일대일 대체: 그것은 완전히 별도 기술, 그리고 둘 다 그냥 멀티 태스킹에 대 한 유용 할 일이. 멀티스레딩을 사용하면 스레드를 동기화하거나 부모에서 자식으로 데이터를 교환하는 것이 훨씬 쉬워지지만 외부 리소스(예: 파일, 데이터베이스, 캐시를 통해)를 통해 수동으로 멀티프로처리할 수도 있습니다. 하지만 동시 요청에 주의! Amp/Thread는 CLI 애플리케이션을 위해 특별히 설계되었습니다. PHP5.5+ 및 pthread가 설치되어 있어야 합니다.

각 스레드가 시작될 때 컨텍스트로 가져오므로 실행은 다음 스레드로 이동하기 전에 실행이 완료될 때까지 기다립니다. 모든 예제는 YII 2, Slim 등과 같은 프레임 워크에 스레딩을 넣어야하는 실제 응용 프로그램과 관련이 없습니다. 자동 로드 기능이 라이브러리와 응용 프로그램을 로드하지만 자식 스레드(자체 프로세스의 단일 처리 단위)가 부모 컨텍스트와 관련이 없을 수 있는 경우 클래스가 이미 파에 로드된 경우에도 Class의 문제가 발견될 수 있음을 의미합니다. ent 컨텍스트. 이 경우 각 스레드에 자동 로드 기능을 호출할 수 있지만 속도가 느려집니다. 작업자 클래스 스태킹 또는 풀링의 도움으로 작업자 클래스의 도움으로 자동 로드 문제를 해결할 수 있습니다.