PHP의 소켓 방식을 통해 PHP 프로그램의 멀티스레딩을 구현합니다. PHP 자체는 멀티스레딩을 지원하지 않습니다. 그렇다면 PHP에서 멀티스레딩을 구현하는 방법은 무엇입니까? 생각해보면 웹 서버 자체는 멀티스레딩을 지원합니다. 각 방문자는 WEB 페이지에 액세스할 때 새로운 스레드를 호출하게 됩니다. 이를 통해 웹 서버 자체 스레드를 사용하여 PHP가 멀티스레딩을 지원하지 않는 문제를 해결할 수 있습니다.
다음은 fsockopen()을 통해 소켓 연결을 설정한 다음 fputs()를 사용하여 메시지를 보내는 PHP 다중 스레드 코드입니다.
$fp=fsockopen($_SERVER['HTTP_HOST'] , 80,&$errno,&$errstr,5);
if(!$fp){
echo "$errstr ($errno)
n";
}
fputs($fp,"GET $_SERVER[PHP_SELF]?flag=1rn")
fclose($fp);
위 코드는 스레드 연산 과정일 뿐입니다. 이러한 작업을 몇 가지 더 수행하는 것이 멀티스레딩입니다. 현재 소위 말하는 PHP의 다중 스레드 프로그램은 모두 이 방법을 기반으로 합니다.
전체 스레드 클래스 코드는 다음과 같습니다.
/**
@title:PHP 멀티스레딩 클래스(스레드)
@version:1.0
@author:axgle
class thread {
var $count
function thread($count=1) {
$this-> ;count=$count;
}
함수 _submit() {
for($i=1;$i<=$this->count;$i++) $this->_thread() ;
참을 반환합니다.
}
function _thread() {
$fp=fsockopen($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5); >if(!$fp){
echo "$errstr ($errno)
n";
}
fputs($fp,"GET $_SERVER[PHP_SELF]?flag= 1rn");
fclose($fp);
}
function exec($func) {
isset($_GET['flag'])?call_user_func($func):$this- >_submit();
}
}
//적용 예:
$th=new thread(10);//10개 스레드
$th->exec(' 데모 ');//사용자 정의 함수 실행
function deco() {
fopen('data/'.microtime(),'w')
}
?>
http://codechina.spaces.live.com/blog/cns!bca6db10a924c24!575.entry
위에서는 PHP의 멀티스레딩 구현을 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.