Heim > Backend-Entwicklung > PHP-Tutorial > javascript - Wenn es auf einer Seite mehrere Ajax-Zugriffe auf den Hintergrund gibt, ist der Hintergrund zu diesem Zeitpunkt Single-Threaded? Oder Multithreaded

javascript - Wenn es auf einer Seite mehrere Ajax-Zugriffe auf den Hintergrund gibt, ist der Hintergrund zu diesem Zeitpunkt Single-Threaded? Oder Multithreaded

WBOY
Freigeben: 2016-08-18 09:15:49
Original
1698 Leute haben es durchsucht

Wenn das Backend das Thinkphp-Framework verwendet und mehrere Ajaxes auf der Seite auf den Backend-Server zugreifen, wird der Backend-Server zu diesem Zeitpunkt asynchron mit einzelnen Threads oder mehreren Threads arbeiten? Ich hoffe, jemand, der mich kennt, kann es mir sagen

Antwortinhalt:

Wenn das Backend das Thinkphp-Framework verwendet und mehrere Ajaxes auf der Seite auf den Backend-Server zugreifen, wird der Backend-Server zu diesem Zeitpunkt asynchron mit einzelnen Threads oder mehreren Threads arbeiten? Ich hoffe, jemand, der mich kennt, kann es mir sagen

Der Standardwert ist Multiprozess und Nicht-Multithread, und ein Prozess verarbeitet eine Anfrage. PHP-Multithreading erfordert die Installation der Erweiterungsimplementierung, aber derselbe Prozess empfängt immer noch eine HTTP-Anfrage, es sei denn, Sie implementieren einen Webserver in PHP und verteilen die Anfrage dann mithilfe von Multithreading, Sie können einen Thread und eine Anfrage implementieren.
Der Standardarbeitsmodus von Apache ist Prefork. Als Modul erstellt PHP einen neuen Prozess als Reaktion auf eine Anfrage. Die maximale Anzahl von Prozessen hängt von der Apache-Konfiguration ab. Nginx kommuniziert mit PHP-FPM über Fast-CGI, was ebenfalls ein Prozess pro Anfrage ist. Die maximale Anzahl von Prozessen hängt von der PHP-FPM-Konfiguration ab.
Wenn die Backend-Verarbeitungszeit einer Anfrage zu lang ist und die Anzahl der Prozesse aufgrund mehrerer identischer Anfragen vollständig geöffnet ist, warten alle nachfolgenden Anfragen auf verfügbare Sockets

Dies hängt von Ihrem Server ab, ob es sich um einen Single-Thread- oder Multi-Thread-Server oder sogar um einen Multi-Prozess-Server handelt.

Was ich über 单线程 und 多线程 verstehe, ist Folgendes:

Wenn Sie beispielsweise ein Formular 上传文件 verwenden, handelt es sich lediglich um eine Anfrage. Sie haben lediglich eine Anfrage zum Hochladen einer Datei initiiert. Nachdem Sie Ihre Anfrage zum Hochladen einer Datei erhalten haben, hat der Server festgestellt, dass Ihre Datei sehr groß ist. dachte er. Wenn er es alleine tragen müsste, würde er wahrscheinlich nicht um 22 Uhr von der Arbeit kommen. Dann wurden automatisch (fork) einige Helfer erstellt, was dem Erstellen einiger neuer Threads gleichkommt, die ihm beim Vervollständigen helfen Das Hochladen großer Dateien muss sehr schnell erfolgen. Das ist Multithreading

Single Threading bedeutet, dass eine Person bis zum Morgengrauen hart arbeiten muss,

Ob es sich also um einen Single-Thread- oder Multi-Thread-Server handelt, hängt nicht davon ab, wie viele Anfragen Sie

initiieren. Der Client-Server initiiert 10.000 Anfragen gleichzeitig (ob synchron oder asynchron), was als , und Multithreading hat damit nichts zu tun, client 并发

Ein einzelner Thread kann keine gleichzeitigen Anforderungen implementieren.

Sie können sich ein Szenario wie dieses vorstellen: Die Download-Geschwindigkeit des Benutzers beträgt 1 KB und er fordert dann ein 1-Millionen-Bild an. Wenn der Server Single-Threaded ist, muss er 17 Minuten warten, bis er antwortet Es ist unmöglich für dich, so zu spielen.

Der Webserver muss also multithreaded sein.

In Bezug auf die Anzahl der Threads liegt sie normalerweise bei einer einstelligen Zahl über 4. Dies ist jedoch eine Einschränkung des Browsers. Die Anzahl der von einer einzelnen Seite initiierten Anfragen ist begrenzt werden in die Warteschlange geworfen. Aus diesem Grund verweist eine Seite manchmal auf die CDN-Datei von Google, aber selbst die Webseitenbilder bleiben hängen und können nicht geladen werden.

Was mich verwirrt, ist Folgendes: Was mich verwirrt, ist, dass Apache PHP blockiert und Nginx PHP asynchron ist. Wenn es sich also um einen Apache-Server handelt, wird PHP dann daran gehindert, auf Ajax-Anfragen zu antworten?

php ist ein Single-Process-Single-Thread-Modell. Die von Ihnen erwähnte Ajax-Anfrage entspricht auch einer http-Anfrage, es gibt also kein Multithreading. Der Ajax von js wird durch asynchrone Anfrage implementiert! ! !

Die gleichzeitigen und serverseitigen Anforderungsverarbeitungsmethoden (Single-Threaded, Multi-Threaded) hängen vom Anwendungsszenario ab. In den meisten Szenarien ist die Serverseite parallel und nicht blockierend

Verwandte Etiketten:
Quelle:php.cn
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