Heim > PHP-Framework > Swoole > Schauen Sie sich den Mehrprozessbetrieb von Swoole an

Schauen Sie sich den Mehrprozessbetrieb von Swoole an

coldplay.xixi
Freigeben: 2021-03-03 10:50:39
nach vorne
2472 Leute haben es durchsucht

Schauen Sie sich den Mehrprozessbetrieb von Swoole an

Mehrere Aufgaben gleichzeitig ausführen

Sequentiell ausgeführte Aufgaben in parallele Ausführung umwandeln (Aufgaben können logischerweise parallel ausgeführt werden)

Zum Beispiel müssen wir anhand der bekannten Benutzerdaten beurteilen, ob Sie müssen E-Mails und Textnachrichten senden. Wenn ja, senden Sie sie.

Wenn Multiprozess nicht verwendet wird, bestimmen wir zunächst, ob eine E-Mail gesendet werden soll, und senden diese gegebenenfalls. Anschließend ermitteln wir, ob eine Textnachricht gesendet werden muss, und senden diese gegebenenfalls. Wenn das Senden einer E-Mail 2 Sekunden und das Senden einer Textnachricht 2 Sekunden dauert, benötigen wir etwa 4 Sekunden, um die Aufgabe abzuschließen.

Wenn wir Multithreading verwenden, können wir zwei Threads öffnen, einen für die Verarbeitung von E-Mails und einen für die Verarbeitung von Textnachrichten. Dies dauert insgesamt etwa 2 Sekunden und die Verarbeitungszeit wird um die Hälfte reduziert.

Empfohlen (kostenlos): swoole

<?php/**
 * Created by PhpStorm.
 * User: zhezhao
 * Date: 2016/10/20
 * Time: 10:37
 */$info = array(    "sendmail"=>1,    "mailto"=>"12345@qq.com",    "sendsms"=>1,    "smsto"=>"123456");echo "start:".date("Y-m-d H:i:s").PHP_EOL;$mail_process = new swoole_process(&#39;sendMail&#39;,true);$mail_process->start();$sms_process = new swoole_process(&#39;sendSMS&#39;,true);$sms_process->start();//主进程输出子进程范围内容echo $mail_process->read();echo PHP_EOL;echo $sms_process->read();echo PHP_EOL;echo "end:".date("Y-m-d H:i:s").PHP_EOL;//并行函数function sendMail(swoole_process $worker){
    global $info;    if($info[&#39;sendmail&#39;]==1){
        sleep(2);        $worker->write("send mail to ".$info[&#39;mailto&#39;]);
    }
}function sendSMS(swoole_process $worker){
    global $info;    if($info[&#39;sendmail&#39;]==1){
        sleep(2);        $worker->write("send sms to ".$info[&#39;smsto&#39;]);
    }
}
Nach dem Login kopieren

Schauen Sie sich den Mehrprozessbetrieb von Swoole an

Teilen Sie große Aufgaben in mehrere kleine Aufgaben auf

Teilen Sie zyklisch ausgeführte Aufgaben zur Ausführung in mehrere Prozesse auf, um die Arbeitseffizienz zu verbessern

Angenommen, wir jetzt habe Eine Notwendigkeit, Webinhalte durch Curl zu crawlen. Die URL-Adresse wird durch ein Array gelesen. Jeder Curl dauert 2 Sekunden. Wenn wir diese 10 Webseiten durch eine for-Schleife crawlen, dauert dies 20 Sekunden. Mithilfe von Multiprozessen können wir die Aufgabe in 5 Teile aufteilen und sie jeweils durch 5 Prozesse ausführen Insgesamt dauert es 4 Sekunden und die Effizienz wird um das Fünffache erhöht.

<?php/**
 * Created by PhpStorm.
 * User: zhezhao
 * Date: 2016/10/20
 * Time: 10:51
 */$url_arr = array();for ($i=0;$i<10;$i++){    $url_arr[] = "www.baidu.com?wd=".$i;
}echo "start:".date("Y-m-d H:i:s").PHP_EOL;$workers = array();for ($i=0;$i<5;$i++){    $process = new swoole_process(&#39;getContents&#39;,true);    $process->start();    $process->write($i);    $workers[] = $process;
}//主进程数据结果foreach ($workers as $process){    echo $process->read();    echo PHP_EOL;
}echo "end:".date("Y-m-d H:i:s").PHP_EOL;function getContents(swoole_process $worker){
    $i = $worker->read();    global $url_arr;    $res1 = execCurl($url_arr[($i*2)]);    $res2 = execCurl($url_arr[($i*2+1)]);    echo $res1.PHP_EOL.$res2;
}function execCurl($url){
    sleep(2);    return "handle ".$url." finished";
}
Nach dem Login kopieren

Schauen Sie sich den Mehrprozessbetrieb von Swoole an

Zusammenfassung

In den beiden oben genannten Situationen werden im Wesentlichen mehrere Prozesse verwendet, um gleichzeitig Aufgaben auszuführen, die keine logische Reihenfolge haben, um die Effizienz zu verbessern.

Der PHP-Mechanismus selbst bietet keine Multithread-Operationen. Die ptcl-Erweiterung bietet eine Schnittstelle für PHP zum Betrieb von Linux-Multiprozessen.

Ich persönlich finde, dass die Multiprozessmethode von Swoole praktischer ist.

Das obige ist der detaillierte Inhalt vonSchauen Sie sich den Mehrprozessbetrieb von Swoole an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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