1. pthread 확장 프로그램 다운로드
다운로드 주소: http://windows.php.net/downloads/pecl/releases/pthreads
2. PHP가 ts 버전인지 nts 버전인지 확인하세요.
phpinfo();를 통해 Thread Safety 항목을 확인합니다. 이 항목은 thread safe한지 확인하는 것입니다. 활성화된 경우 일반적으로 ts 버전이어야 하며, 그렇지 않으면 nts 버전입니다.
3. PHP tsnts 버전에 따라 해당 pthreads 버전을 선택합니다
제 PHP 버전은 5.4.17이므로 php_pthreads-0.1.0-5.4-ts-vc9-x86을 다운로드합니다. zip 파일 패키지, 여기서 0.1.0은 현재 pthreads 버전 번호를 나타내고, 5.4는 PHP 버전 번호를 나타내며, ts는 이전에 PHP에 해당한다고 판단된 ts 및 nts 버전을 나타내고, vs9는 Visual Studio 2008 컴파일러로 컴파일된 버전을 나타냅니다. 마지막 x86은 32비트 버전을 나타냅니다.
4. pthreads 확장 다운로드
다운로드 주소: http://windows.php.net/downloads/pecl/releases/pthreads
5. >
php_pthreads.dll을 binphpext 디렉터리에 복사합니다.pthreadVC2.dll을 binphp 디렉터리에 복사합니다.
pthreadVC2.dll을 C:windowssystem32 디렉터리에 복사합니다.
php 구성 파일 php.ini를 엽니다. 마지막에 Extension=php_pthreads.dll
프롬프트를 추가하세요! Windows 시스템은 PATH 환경 변수에 pthreadVC2.dll 경로를 추가해야 합니다. 내 컴퓨터--->마우스 오른쪽 버튼--->속성--->고급--->환경 변수--->시스템 변수--->Path라는 경로 찾기---> ;편집--->변수 값 끝에 pthreadVC2.dll의 전체 경로를 추가합니다(내 경로는 C:WINDOWSsystem32pthreadVC2.dll입니다).
<?php class Thread { var $hooks = array(); var $args = array(); function thread() { } function addthread($func) { $args = array_slice(func_get_args(), 1); $this->hooks[] = $func; $this->args[] = $args; return true; } function runthread() { if(isset($_GET['flag'])) { $flag = intval($_GET['flag']); } if($flag || $flag === 0) { call_user_func_array($this->hooks[$flag], $this->args[$flag]); } else { for($i = 0, $size = count($this->hooks); $i < $size; $i++) { $fp=fsockopen($_SERVER['HTTP_HOST'],$_SERVER['SERVER_PORT']); if($fp) { $out = "GET {$_SERVER['PHP_SELF']}?flag=$i HTTP/1.1rn"; $out .= "Host: {$_SERVER['HTTP_HOST']}rn"; $out .= "Connection: Closernrn"; fputs($fp,$out); fclose($fp); } } } } }
include('thread.php'); class AsyncOperation extends Thread { public function __construct($arg){ $this->arg = $arg; } public function run(){ if($this->arg){ printf("Hello %s\n", $this->arg); } } } $thread = new AsyncOperation("World"); if($thread->start()) $thread->join();