PHP 멀티스레딩 클래스 구현 사례 연구

黄舟
풀어 주다: 2023-03-17 11:22:02
원래의
2414명이 탐색했습니다.

우리는 이전에 PHP 멀티스레딩 및 비동기 호출의 구현 방법을 소개했습니다. 웹 서버를 통해 구현된 멀티스레딩은 멀티스레딩의 일부 효과만 모방할 수 있을 뿐이며 기존의 멀티스레딩은 아닙니다. 하지만 무슨 일이 있어도 우리의 요구 사항 중 일부를 충족할 수 있으므로 오늘은 PHP 다중 스레드 클래스를 구현하겠습니다!

php 다중 스레드 클래스:

/** 
* @title: PHP多线程类(Thread) 
* @version: 1.0 
* 
* PHP多线程应用示例: 
* require_once 'thread.class.php'; 
* $thread = new thread(); 
* $thread->addthread('action_log','a'); 
* $thread->addthread('action_log','b'); 
* $thread->addthread('action_log','c'); 
* $thread->runthread(); 
* 
* function action_log($info) { 
* $log = 'log/' . microtime() . '.log'; 
* $txt = $info . "rnrn" . 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn"; 
* $fp = fopen($log, 'w'); 
* fwrite($fp, $txt); 
* fclose($fp); 
* } 
*/ 
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[&#39;HTTP_HOST&#39;],$_SERVER[&#39;SERVER_PORT&#39;]); 
if($fp) 
{ 
$out = "GET {$_SERVER[&#39;PHP_SELF&#39;]}?flag=$i HTTP/1.1rn"; 
$out .= "Host: {$_SERVER[&#39;HTTP_HOST&#39;]}rn"; 
$out .= "Connection: Closernrn"; 
fputs($fp,$out); 
fclose($fp); 
} 
} 
} 
} 
}
로그인 후 복사

Usage 메소드, 코드는 다음과 같습니다:

$thread = new thread(); 
$thread->addthread(&#39;func1&#39;,&#39;info1&#39;); 
$thread->addthread(&#39;func2&#39;,&#39;info2&#39;); 
$thread->addthread(&#39;func3&#39;,&#39;info3&#39;); 
$thread->runthread();
로그인 후 복사

지침:

addthread()는 스레드 함수를 추가하는 것입니다. 첫 번째 매개변수는 함수 이름이고 후속 매개변수는 매개변수(선택사항)가 전달됩니다. 함수의 매개변수를 지정합니다.

runthread()는 실행 스레드의 함수입니다.

요약:

이 문서에서는 PHP 멀티 스레딩 클래스를 공유합니다. 앞으로는 그렇게 많이 작성할 필요가 없습니다. 다음에 필요할 때 코드를 직접 호출할 수 있으니 도움이 되길 바랍니다!

관련 권장사항:

PHP에서 비동기 멀티스레딩을 구현하는 방법


PHP 멀티스레드 시뮬레이션 구현의 세 가지 방법 소개


PHP 멀티스레딩 구현 예


PHP 멀티스레딩을 구현하는 방법—shell

위 내용은 PHP 멀티스레딩 클래스 구현 사례 연구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿