Heim >Backend-Entwicklung >PHP-Tutorial >PHP implementiert Multithreading

PHP implementiert Multithreading

WBOY
WBOYOriginal
2016-08-08 09:32:49919Durchsuche

Realisieren Sie Multithreading von PHP-Programmen durch die Socket-Methode von PHP. PHP selbst unterstützt kein Multithreading. Wie implementiert man also Multithreading in PHP? Sie können darüber nachdenken, der WEB-Server selbst unterstützt Multithreading. Jeder Besucher ruft beim Zugriff auf die WEB-Seite einen neuen Thread auf. Dadurch können wir den eigenen Thread des WEB-Servers verwenden, um das Problem zu lösen, dass PHP kein Multithreading unterstützt.
 
Das Folgende ist ein PHP-Multithread-Code, der über fsockopen() eine Socket-Verbindung herstellt und dann mit fputs() eine Nachricht sendet:
$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);


Der obige Code ist nur ein Thread-Operationsprozess. Das Ausführen einiger weiterer solcher Operationen ist Multithreading. Die aktuellen sogenannten Multithread-Programme von PHP basieren alle auf dieser Methode.
Ein vollständiger Thread-Klassencode ist unten angegeben.
/**
@title:PHP Multi-Threading-Klasse (Thread)
@version:1.0
@author:axgle */
class thread {
var $count
function thread($count=1) {
$this-> ;count=$count;
}
function _submit() {
for($i=1;$i<=$this->count;$i ) $this->_thread() ;
return true; >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();
}
}
//Anwendungsbeispiel:
$th=new thread(10);//10 threads
$th->exec(' demo ');//Eine benutzerdefinierte Funktion ausführen
function demo() {
fopen('data/'.microtime(),'w');
?>

http://codechina.spaces.live.com/blog/cns!bca6db10a924c24!575.entry

Das Obige stellt die Implementierung von Multithreading in PHP vor, einschließlich seiner Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

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