Heim >Backend-Entwicklung >PHP-Tutorial >Kann PHP wirklich Multithread betreiben? Die pthreads-Lösung erklärt

Kann PHP wirklich Multithread betreiben? Die pthreads-Lösung erklärt

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 19:30:37889Durchsuche

Can PHP Really Multithread?  The pthreads Solution Explained

Multithreading in PHP: Ist das möglich?

Die Frage, ob Multithreading in PHP möglich ist, stellt sich schon lange frühere Vorschläge, mehrere PHP-Instanzen auf dem Betriebssystem zu erzwingen. Dieser Ansatz warf jedoch Probleme hinsichtlich der Speichernutzung und der Prozessbeendigung auf.

Einführung von pthreads

Die Antwort liegt in der pthreads-Erweiterung, die eine robuste objektorientierte API für bereitstellt Multithreading in PHP. Diese Erweiterung ist in PHP 7.2 verfügbar und erfordert CLI-basierte Anwendungen, da Multithreading in Webserverumgebungen nicht unterstützt wird.

Verwendung von pthreads

Die pthreads-Erweiterung stellt Klassen wie z als Thread-, Workers- und Threaded-Objekte, um Threads zu verwalten, Aufgaben gleichzeitig auszuführen und zu synchronisieren Ausführung.

Einfaches Beispiel

Betrachten Sie den folgenden Codeausschnitt:

class AsyncOperation extends Thread {
    public function run() {
        // Long-running operation
    }
}

$stack = array();
foreach (range("A", "D") as $i) {
    $stack[] = new AsyncOperation($i);
}

foreach ($stack as $t) {
    $t->start();
}

Dieser Code erstellt mehrere Threads und führt sie gleichzeitig aus, wobei Zeitstempel und ausgegeben werden Aufgabenstatus.

Real-World Beispiel

Eine praktische Anwendung von Multithreading in PHP ist die Durchführung asynchroner Webanfragen:

class AsyncWebRequest extends Thread {
    public function run() {
        $this->data = file_get_contents($this->url);
    }
}

$g = new AsyncWebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10));
$g->start();

while ($g->isRunning()) {
    echo ".";
    usleep(100);
}

if ($g->join()) {
    printf("Request took %f seconds to finish receiving %d bytes\n", microtime(true) - $t, strlen($g->data));
}

Dieser Code startet eine asynchrone Webanfrage, druckt während des Prozesses Punkte und protokolliert die Zeit genommen, um die Antwort zu erhalten.

Fazit

Mit dem Mit der pthreads-Erweiterung bietet PHP einen leistungsstarken Mechanismus für Multithreading, der es Entwicklern ermöglicht, Aufgaben gleichzeitig auszuführen und die Leistung von CLI-basierten Anwendungen zu verbessern.

Das obige ist der detaillierte Inhalt vonKann PHP wirklich Multithread betreiben? Die pthreads-Lösung erklärt. 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