Heim >Backend-Entwicklung >PHP-Problem >So implementieren Sie Multithreading in PHP

So implementieren Sie Multithreading in PHP

(*-*)浩
(*-*)浩Original
2019-10-10 15:15:003752Durchsuche

PHP unterstützt standardmäßig kein Multithreading, Sie müssen die pthread-Erweiterung installieren. Um die pthread-Erweiterung zu installieren, müssen Sie zum Neukompilieren den Parameter --enable-maintainer-zts verwenden PHP. Dieser Parameter wird beim Kompilieren von PHP angegeben.

So implementieren Sie Multithreading in PHP

PHP-Implementierung

Die Thread-Sicherheit der PHP-Implementierung verwendet hauptsächlich den TSRM-Mechanismus zum Schutz globaler Variablen und static Die Variablen sind isoliert und globale Variablen und statische Variablen werden in jeden Thread kopiert. Jeder Thread verwendet eine Sicherung des Hauptthreads, wodurch Variablenkonflikte und Thread-Sicherheitsprobleme vermieden werden. (Empfohlenes Lernen: PHP-Video-Tutorial)

Die Kapselung von Multithreading in PHP gewährleistet die Thread-Sicherheit. Programmierer müssen nicht darüber nachdenken, globale Variablen mit verschiedenen Sperren zu versehen, um Lese- und Schreibkonflikte zu vermeiden Gleichzeitig verringert sich auch die Fehlerwahrscheinlichkeit und der geschriebene Code ist sicherer.

Aber das Ergebnis ist, dass, sobald der Sub-Thread mit der Ausführung beginnt, der Haupt-Thread die Ausführungsdetails des Sub-Threads nicht mehr anpassen kann und der Thread die Fähigkeit verliert, Nachrichten zwischen Threads über globale Variablen weiterzuleiten ein gewisses Maß.

Gleichzeitig kommt es nach dem Aktivieren der Thread-Sicherheitsoption zu zusätzlichen Verlusten, wenn der TSRM-Mechanismus zum Zuweisen und Verwenden von Variablen verwendet wird. Daher kommt es in einer PHP-Umgebung, die kein Multithreading erfordert, zu zusätzlichen Verlusten. Verwenden Sie die ZTS-Version (Nicht-Thread-Sicherheit) von PHP.

Beispielcode

Das Folgende ist eine Thread-Klasse, die zum Anfordern einer bestimmten Schnittstelle verwendet wird. Schreiben Sie als Nächstes zwei darauf basierende Multithread-Anwendungsbeispiele:

class Request extends Thread {
    public $url;
    public $response;
    public function __construct($url) {
        $this->url = $url;
    }
    public function run() {
        $this->response = file_get_contents($this->url);
    }
}

Asynchrone Anfrage

Teilen Sie die synchrone Anfrage in mehrere Threads und asynchrone Aufrufe auf, um die Betriebseffizienz des Programms zu verbessern .

$chG = new Request("www.google.com");
$chB = new Request("www.baidu.com");
$chG ->start();
$chB ->start();
$chG->join();
$chB->join();

$gl = $chG->response;
$bd = $chB->response;

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Multithreading in PHP. 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