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!
Parallel
parallelconcurrency
Parallel Concurrency-Erweiterung können wir Multithreading in PHP implementieren. Parallel
, die ein Objekt und damit einen Thread erstellt. parallelRuntime
。我们可以从 parallelRuntime()
Methode bereit. run()
,它安排任务并行运行。我们可以将 Closure
作为参数传递给 run
genannt, und wir können auch ein task
Array als zweiten Parameter der Methode angeben. Der Inhalt des Arrays wird an die Aufgabe übergeben.
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>
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
for
循环以在函数内打印 +
符号 50 次。接下来,在 run()
方法之外,编写另一个 for
循环来打印 -
Schreiben Sie zunächst eine
+
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.
<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>
popen()
Ausgabe: <code> <code class="language-text hljs" data-lang="text"><span style="display:flex;"><span>-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ </span></span></code></code>
popen()
Verwenden Sie die Funktion
Mit der Funktion
können wir parallele Prozesse in PHP öffnen. popen()
popen()
函数并创建多个进程来实现多线程。popen()
函数将 command
作为第一个参数,将 mode
Auf diese Weise können wir Multithreading in PHP implementieren.
r
或 w
Wir können die
Die Funktion verwendet command
als ersten Parameter und mode
als zweiten Parameter. for
循环。在循环内部,创建另一个循环五次的 for
sein. $process
来存储 popen()
函数。将 PHP 文件 message.php
和 r
-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>
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!