Heim > Artikel > Backend-Entwicklung > Fallstudie zur Implementierung der PHP-Multithreading-Klasse
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['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); } } } } }
Verwendungsmethode, der Code lautet wie folgt:
$thread = new thread(); $thread->addthread('func1','info1'); $thread->addthread('func2','info2'); $thread->addthread('func3','info3'); $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:
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!