Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierungsmethode für PHP-Multithread-Parallelität

Implementierungsmethode für PHP-Multithread-Parallelität

高洛峰
高洛峰Original
2016-12-21 11:43:481372Durchsuche

Das Beispiel in diesem Artikel beschreibt die Implementierungsmethode der Multithread-Parallelität in PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Multi-Threading in Java ist eine neue Thread-Sache. PHP basiert auf Apache und es gibt eine Multi-Threading-Methode am Ende von Linux.

So simulieren Sie PHP-Parallelität, wenn Sie den Apache-Server nicht steuern können

<?php
if(function_exists(&#39;date_default_timezone_set&#39;)) {
  date_default_timezone_set(&#39;PRC&#39;);
}
function a()
{
 $time = time();
 sleep(3);
 $fp = fopen(&#39;result_a&#39;.$time.&#39;.log&#39;, &#39;w&#39;);
 fputs($fp, &#39;Set in &#39; . Date(&#39;h:i:s&#39;, time()) . (double)microtime() . "rn");
 fclose($fp);
}
function b()
{
 $time = time();
 sleep(3);
 $fp = fopen(&#39;result_b&#39;.$time.&#39;.log&#39;, &#39;w&#39;);
 fputs($fp, &#39;Set in &#39; . Date(&#39;h:i:s&#39;, time()) . (double)microtime() . "rn");
 fclose($fp);
}
if(!isset($_GET[&#39;act&#39;])) $_GET[&#39;act&#39;] = &#39;a&#39;;
if($_GET[&#39;act&#39;] == &#39;a&#39;)
{
 a();
}
else if($_GET[&#39;act&#39;] == &#39;b&#39;) b();
?>

Der obige Code wird lokal geschrieben. Importieren Sie a Datei.

Wenn Sie localhost/a.php besuchen und so schnell wie möglich zwei Browser-Tabs gleichzeitig öffnen, werden Sie feststellen, dass der Unterschied in der Erstellungszeit der beiden Dateien 3 Sekunden beträgt

Aber wenn Sie localhost/a .php?act=b besuchen. Ein weiterer Besuch /a.php?act=a stellt fest, dass die beiden Dateien fast gleichzeitig erstellt wurden.

Für Apache bedeutet dieselbe URL einen Thread (oder Prozess), aber unterschiedliche URLs bedeuten Parallelität.

Wenn es in PHP eine Download-Aktion gibt

function runThread()
{
 down("http://localhost/test/a.php?act=a");
}
if($_GET[&#39;act&#39;] == &#39;run&#39;)
{
 echo &#39;start:&#39;;
 runThread();
 echo &#39; End&#39;;
}
   
http://localhost/test/a.php?act=run
http://localhost/test/a.php?act=run&s=2

Solange die Hauptzugriffs-URL unterschiedlich ist, handelt es sich um unterschiedliche Prozesse, was Parallelität bedeutet. Die Dateierstellungszeit beträgt nicht 3 Sekunden

Freunde, die einen lokalen Linux-Server haben, können auch Linux verwenden, um Parallelität zu simulieren

<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(5);
}
?>

Speichern Geben Sie das Obige in test.php ein und schreiben Sie dann einen SHELL-Code

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q test.php &
done

Ich hoffe, dieser Artikel wird für alle hilfreich sein, die sich mit PHP-Programmierung befassen.


Weitere Artikel zu PHP-Multithread-Parallelitätsimplementierungsmethoden finden Sie auf der chinesischen PHP-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