Implementierung von Multithreading in PHP

WBOY
Freigeben: 2024-02-28 09:24:01
nach vorne
854 Leute haben es durchsucht

Die Implementierung von Multithreading in PHP war schon immer ein Thema, das Entwicklern Sorgen bereitete. Mit der kontinuierlichen Weiterentwicklung von Internetanwendungen wird die Notwendigkeit, eine große Anzahl gleichzeitiger Anfragen zu bearbeiten, immer dringlicher. In diesem Artikel wird die Implementierung von Multithreading in PHP vorgestellt, die Vorteile und anwendbaren Szenarien von Multithreading untersucht und Entwicklern dabei geholfen, komplexe Anforderungen an die Parallelität besser zu bewältigen. Werfen wir einen genaueren Blick auf die Anwendung von Multithreading in PHP!


Implementieren Sie Multithreading in php mit der Erweiterung Parallelparallelconcurrency

Mit der

Parallel Concurrency-Erweiterung können wir Multithreading in PHP implementieren. Parallel

Diese Erweiterung bietet eine Erläuterung der Thread-Klasse

, die ein Objekt und damit einen Thread erstellt. parallelRuntime。我们可以从 parallelRuntime()

Diese Klasse stellt eine Methode

Methode bereit. run(),它安排任务并行运行。我们可以将 Closure 作为参数传递给 run

Dieser Parameter wird im Allgemeinen

genannt, und wir können auch ein taskArray als zweiten Parameter der Methode angeben. Der Inhalt des Arrays wird an die Aufgabe übergeben.

Vor dem Herunterladen der

Parallel Concurrency-Erweiterung gelten einige Voraussetzungen. Die PHP-Version sollte 8.0 sein und Zend Thread Safe (ZTS) sollte aktiviert sein. Parallel

Laden Sie die Erweiterung wie unten gezeigt herunter. <pthread.h> 标头是另一个要求。我们可以从 pecl

<code>
<code class="language-php hljs" data-lang="php"><span style="display:flex;"><span>pecl install parallel
</span></span></code></code>
Nach dem Login kopieren
Wir können

Schleifen verwenden, um for die parallele Ausführung eines Programms zu zu testen .

Beispielsweise können wir eine Schleife innerhalb der run()-Methode und eine weitere Schleife außerhalb der Methode ausführen. In diesem Fall erfolgt die Codeausführung parallel.

Erstellen Sie beispielsweise ein Objekt $rt der Klasse parallelRuntime und verwenden Sie dann dieses Objekt, um die parallelRuntime 类的对象 $rt,然后使用该对象调用 run() 方法。在 run()-Methode aufzurufen. Schreiben Sie in der

-Methode eine anonyme Funktion.

for 循环以在函数内打印 + 符号 50 次。接下来,在 run() 方法之外,编写另一个 for 循环来打印 - Schreiben Sie zunächst eine

-Schleife, um das Symbol + 50 Mal innerhalb der Funktion zu drucken. Schreiben Sie als Nächstes außerhalb der

-Methode eine weitere run() 方法内的循环在单独的线程中运行,run() 方法外的循环将同时执行。结果,-+-Schleife, die die --Symbole 50 Mal ausgibt.

Da die Schleife innerhalb der

-Methode in einem separaten Thread ausgeführt wird, wird die Schleife außerhalb der

-Methode gleichzeitig ausgeführt. Dadurch werden die Symbole - und + gleichzeitig gedruckt, wie im Ausgabeabschnitt unten gezeigt.

Daher können wir parallele Parallelitätserweiterungen verwenden, um Multithreading in PHP zu implementieren.


Beispielcode:

<code>
<code class="language-php hljs" data-lang="php"><span style="display:flex;"><span><span style="color:#19177c">$rt</span> <span style="color:#666">=</span> <span style="color:#008000;font-weight:bold">new</span> \parallel\Runtime();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#19177c">$rt</span><span style="color:#666">-></span><span style="color:#7d9029">run</span>(<span style="color:#008000;font-weight:bold">funct<strong class="keylink">io</strong>n</span>(){
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">for</span> (<span style="color:#19177c">$i</span> <span style="color:#666">=</span> <span style="color:#666">0</span>; <span style="color:#19177c">$i</span> <span style="color:#666"><</span> <span style="color:#666">50</span>; <span style="color:#19177c">$i</span><span style="color:#666">++</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">echo</span> <span style="color:#ba2121">"+"</span>;
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">for</span> (<span style="color:#19177c">$i</span> <span style="color:#666">=</span> <span style="color:#666">0</span>; <span style="color:#19177c">$i</span> <span style="color:#666"><</span> <span style="color:#666">50</span>; <span style="color:#19177c">$i</span><span style="color:#666">++</span>) {
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">echo</span> <span style="color:#ba2121">"-"</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></code>
Nach dem Login kopieren
popen() Ausgabe:

<code>
<code class="language-text hljs" data-lang="text"><span style="display:flex;"><span>-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</span></span></code></code>
Nach dem Login kopieren

popen() Verwenden Sie die Funktion

, um Multithreading in PHP zu implementieren

Mit der Funktion

können wir parallele Prozesse in PHP öffnen. popen()

Diese Funktion verzweigt den Prozess, um eine parallele Verarbeitung zu erreichen. Prozesse teilen keine Ressourcen.

popen() 函数并创建多个进程来实现多线程。popen() 函数将 command 作为第一个参数,将 mode Auf diese Weise können wir Multithreading in PHP implementieren.

Funktion erstellt eine Pipe zum gegabelten Prozess.

rw Wir können die

-Funktion durchlaufen und mehrere Prozesse erstellen, um Multithreading zu erreichen.

Die Funktion verwendet command als ersten Parameter und mode als zweiten Parameter. for 循环。在循环内部,创建另一个循环五次的 for

Modus kann

sein. $process 来存储 popen() 函数。将 PHP 文件 message.phpr

Erstellen Sie beispielsweise eine

-Schleife, die fünfmal wiederholt wird. Erstellen Sie innerhalb der Schleife eine weitere pclose() 函数关闭 $process-Schleife, die fünfmal wiederholt wird.

Erstellen Sie innerhalb der Unterschleife ein Array $process, um die pclose()-Funktion zu speichern. Legen Sie die PHP-Datei message.php und den Modus r als ersten und zweiten Parameter fest.

Erstellen Sie als Nächstes eine weitere Unterschleife und verwenden Sie popen().

Dabei werden in der ersten Teilschleife fünf Prozesse parallel ausgeführt. Der Prozess wird in der zweiten Teilschleife mit der Funktion

beendet. 🎜 🎜 So implementieren wir Multithreading mithilfe der 🎜-Funktion in PHP. 🎜 🎜 Beispielcode: 🎜
<code>
<code class="language-php hljs" data-lang="php"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">for</span> (<span style="color:#19177c">$i</span><span style="color:#666">=</span><span style="color:#666">0</span>; <span style="color:#19177c">$i</span><span style="color:#666"><</span><span style="color:#666">5</span>; <span style="color:#19177c">$i</span><span style="color:#666">++</span>) {
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">for</span> (<span style="color:#19177c">$j</span><span style="color:#666">=</span><span style="color:#666">0</span>; <span style="color:#19177c">$j</span><span style="color:#666"><</span><span style="color:#666">5</span>; <span style="color:#19177c">$j</span><span style="color:#666">++</span>) {
</span></span><span style="display:flex;"><span> <span style="color:#19177c">$process</span>[<span style="color:#19177c">$j</span>] <span style="color:#666">=</span> popen(<span style="color:#ba2121">'message.php'</span>, <span style="color:#ba2121">'r'</span>);
</span></span><span style="display:flex;"><span> }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span style="color:#008000;font-weight:bold">for</span> (<span style="color:#19177c">$j</span><span style="color:#666">=</span><span style="color:#666">0</span>; <span style="color:#19177c">$j</span><span style="color:#666"><</span><span style="color:#666">5</span>; <span style="color:#666">++</span><span style="color:#19177c">$j</span>) {
</span></span><span style="display:flex;"><span> pclose(<span style="color:#19177c">$process</span>[<span style="color:#19177c">$j</span>]);
</span></span><span style="display:flex;"><span> }
</span></span><span style="display:flex;"><span>}
</span></span></code></code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonImplementierung von Multithreading in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:lsjlt.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!