Heim >Backend-Entwicklung >PHP-Problem >Wie man in PHP Multithreading durchführt
PHP unterstützt standardmäßig kein Multithreading, Sie müssen die pthread-Erweiterung installieren. Um die pthread-Erweiterung zu installieren, müssen Sie zum Neukompilieren den Parameter --enable-maintainer-zts verwenden PHP. Dieser Parameter wird beim Kompilieren von PHP angegeben.
Multithreading ist ein Faktor, der Programme unruhig macht. Bevor Sie Multithreading verwenden, müssen Sie zunächst Thread-Sicherheitsprobleme berücksichtigen:
Thread-Sicherheit: Thread-Sicherheit ist ein Begriff in der Programmierung, der bedeutet, dass eine Funktion oder Funktionsbibliothek beim Aufruf in einer Multithread-Umgebung die gemeinsame Nutzung zwischen mehreren Threads korrekt verarbeiten kann damit Programmfunktionen korrekt ausgeführt werden können. (Empfohlenes Lernen: PHP-Video-Tutorial)
Da beim herkömmlichen Multithreading mehrere Threads Variablen gemeinsam nutzen, können die folgenden Probleme auftreten:
Es gibt ein globales Array $ arr = array('a');;
Ein Thread erhält die Array-Länge 1;
B-Thread erhält die Array-Länge 1;
Ein Thread springt heraus Array-Element $a = array_pop($arr); $a = 'a';;
B-Thread öffnet auch Array-Element $b = array_pop($arr); $a = null;;
Zu diesem Zeitpunkt ist im B-Thread ein seltsames Ereignis aufgetreten. Die Array-Länge war offensichtlich größer als 0, oder es wurde nichts angezeigt;
PHP-Implementierung
Thread Von PHP implementierte Sicherheit Der TSRM-Mechanismus wird hauptsächlich zum Isolieren globaler Variablen und statischer Variablen verwendet. Jeder Thread verwendet eine Sicherung des Hauptthreads, wodurch Variablenkonflikte vermieden werden Thread-Sicherheitsprobleme.
Die Multi-Thread-Kapselung von PHP gewährleistet die Thread-Sicherheit. Programmierer müssen nicht mehr über das Hinzufügen verschiedener Sperren zu globalen Variablen nachdenken, um Lese- und Schreibkonflikte zu vermeiden. Außerdem wird die Wahrscheinlichkeit von Fehlern verringert und der geschriebene Code wird sicherer.
Aber das Ergebnis ist, dass, sobald der Sub-Thread mit der Ausführung beginnt, der Haupt-Thread die Ausführungsdetails des Sub-Threads nicht mehr anpassen kann und der Thread die Fähigkeit verliert, Nachrichten zwischen Threads über globale Variablen weiterzuleiten ein gewisses Maß.
Gleichzeitig kommt es nach dem Aktivieren der Thread-Sicherheitsoption zu zusätzlichen Verlusten, wenn der TSRM-Mechanismus zum Zuweisen und Verwenden von Variablen verwendet wird. Daher kommt es in einer PHP-Umgebung, die kein Multithreading erfordert, zu zusätzlichen Verlusten. Verwenden Sie die ZTS-Version (Nicht-Thread-Sicherheit) von PHP.
Das obige ist der detaillierte Inhalt vonWie man in PHP Multithreading durchführt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!