Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen Thread Safe und None Thread Safe in PHP?

Was ist der Unterschied zwischen Thread Safe und None Thread Safe in PHP?

青灯夜游
青灯夜游Original
2021-06-03 14:48:292228Durchsuche

Unterschied: Thread Safe bedeutet Thread-Sicherheit, und Thread-Sicherheitsprüfungen werden während der Ausführung durchgeführt, um zu verhindern, dass neue Threads gestartet werden, wenn neue Anforderungen vorliegen und Systemressourcen erschöpft werden, während None Thread Safe Nicht-Thread-Sicherheit bedeutet und dies auch nicht der Fall ist während der Ausführung Thread-Sicherheitsüberprüfungen durchgeführt.

Was ist der Unterschied zwischen Thread Safe und None Thread Safe in PHP?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Die Windows-Version von PHP verfügt über Thread Safe (Thread-sicher) und None Thread Safe (nicht Thread-sicher) ab Version 5.2.1 Was ist der Unterschied zwischen den beiden?

  • None Thread Safe bedeutet Nicht-Thread-Sicherheit, und während der Ausführung wird keine Thread-Sicherheitsprüfung durchgeführt.

  • Thread Safe bedeutet, dass während der Ausführung Thread-Sicherheitsprüfungen durchgeführt werden, um zu verhindern, dass neue Threads gestartet werden, wenn neue Anforderungen vorliegen und die Systemressourcen erschöpft sind.

Ab der ersten Windows-Version von PHP 3.0.17, die am 20. Oktober 2000 veröffentlicht wurde, sind alle Versionen threadsicher. Dies liegt daran, dass Windows eine andere Multiprozess-Arbeitsmethode verwendet als Linux/Unix-Systeme eine Multithread-Arbeitsmethode. Wenn Sie PHP im CGI-Modus unter IIS ausführen, ist es sehr langsam. Dies liegt daran, dass der CGI-Modus auf Multiprozess und nicht auf Multithread basiert.

Im Allgemeinen konfigurieren wir PHP für die Ausführung im ISAPI-Modus. ISAPI ist eine Multithread-Methode, die viel schneller ist. Es gibt jedoch ein Problem. Viele häufig verwendete PHP-Erweiterungen basieren auf dem Multiprozess-Denken von Linux/Unix. Wenn diese Erweiterungen im ISAPI-Modus ausgeführt werden, verursachen sie Fehler und bringen IIS zum Erliegen.

Der CGI-Modus ist also die sicherste Möglichkeit, PHP unter IIS auszuführen, aber der CGI-Modus erfordert das Neuladen und Entladen der gesamten PHP-Umgebung für jede HTTP-Anfrage, und sein Verbrauch ist enorm.

Um der Effizienz und Sicherheit von PHP unter IIS Rechnung zu tragen, hat Microsoft die FastCGI-Lösung bereitgestellt. FastCGI ermöglicht die Wiederverwendung von PHP-Prozessen, anstatt einen Prozess für jede neue Anfrage erneut zu öffnen. Gleichzeitig kann FastCGI auch die gleichzeitige Ausführung mehrerer Prozesse ermöglichen. Dies löst nicht nur das Problem des übermäßigen Verbrauchs des CGI-Prozessmodus, sondern nutzt auch die Tatsache aus, dass der CGI-Prozessmodus keine Thread-Sicherheitsprobleme aufweist.

Wenn Sie also ISAPI zum Ausführen von PHP verwenden, müssen Sie die Thread Safe-Version (Thread-sicher) verwenden. Wenn Sie den FastCGI-Modus zum Ausführen von PHP verwenden, ist keine Thread-Sicherheitsprüfung erforderlich. Verwenden Sie None Thread Safe (NTS). Eine nicht-threadsichere Version kann die Effizienz besser verbessern.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Thread Safe und None Thread Safe in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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