Heim  >  Artikel  >  Backend-Entwicklung  >  Fallstudie zur Implementierung der PHP-Multithreading-Klasse

Fallstudie zur Implementierung der PHP-Multithreading-Klasse

黄舟
黄舟Original
2017-11-11 14:16:512397Durchsuche

Wir haben Ihnen bereits die Implementierungsmethode von PHP-Multithreading und asynchronen Aufrufen vorgestellt. Wir alle wissen, dass das über den WEB-Server implementierte Multithreading nur einige Effekte von Multithreading imitieren kann und kein Multithreading ist Im wahrsten Sinne des Wortes kann es trotzdem einige unserer Anforderungen erfüllen, deshalb werden wir heute die PHP-Multithread-Klasse implementieren!

PHP-Multithread-Klasse:

/** 
* @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); 
} 
} 
} 
} 
}

Verwendungsmethode, der Code lautet wie folgt:

$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();

Anweisungen:

addthread () dient zum Hinzufügen einer Thread-Funktion. Der erste Parameter ist der Funktionsname, und die nachfolgenden Parameter (optional) sind die Parameter, die an die angegebene -Funktion übergeben werden.

runthread () ist die Funktion des Ausführungsthreads.

Zusammenfassung:

Dieser Artikel teilt mit Ihnen eine PHP-Multithread-Klasse, also Sie Sie müssen in Zukunft nicht mehr so ​​viel Code schreiben, wenn Sie ihn brauchen. Ich hoffe, er kann Ihnen weiterhelfen.

Verwandte Empfehlungen:

So implementieren Sie asynchrones Multithreading in PHP


Einführung in drei Methoden der PHP-Multithread-Simulationsimplementierung


Ein Beispiel für die PHP-Multithread-Implementierung


Eine Implementierungsmethode von PHP-Multithreading – Shell

Das obige ist der detaillierte Inhalt vonFallstudie zur Implementierung der PHP-Multithreading-Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn