Heim Backend-Entwicklung PHP-Tutorial Was fehlt PHP im Vergleich zu C/C++ oder Java? Multithreading, Multithreading, Multithreading…

Was fehlt PHP im Vergleich zu C/C++ oder Java? Multithreading, Multithreading, Multithreading…

Nov 30, 2016 am 11:17 AM
c/c++ java php 多线程

Ich habe mich gestern mit einem ehemaligen Kollegen unterhalten und mich über PHP und Swoole beschwert. Er glaubte, dass PHP voller Fallstricke sei und dass PHP große Einschränkungen habe. PHP+Swoole ist nicht für Server mit hoher Parallelität geeignet, C+Swoole ist die beste Lösung. C++ verfügt über verschiedene Datenstrukturen, C++ kann Threads öffnen und C++ kann Objekte teilen. Es scheint notwendig, es sorgfältig zu erklären.

Was fehlt HP im Vergleich zu C/C++ oder Java? Multithreading, Multithreading, Multithreading...

Ja. PHP hat weniger Threads als C/C++ und Java. PHP verfügt nur über eine Multiprozesslösung, daher werden globale Variablen und Objekte in PHP nicht gemeinsam genutzt, Datenstrukturen können nicht prozessübergreifend betrieben werden, Socket-Dateideskriptoren können nicht gemeinsam genutzt werden usw. PHP hat also Einschränkungen?

Multi-Threading scheint viel leistungsfähiger zu sein als Multi-Processing. Tatsächlich kann ich Ihnen mit gutem Gewissen sagen, dass Multi-Threading mehr Fallstricke mit sich bringt.

Probleme bei der Datensynchronisierung führen zum Absturz. Entweder Sie opfern die Leistung und fügen überall Sperren hinzu, oder Sie verwenden die höllisch harte, gleichzeitige Programmierung ohne Sperren. Soweit ich weiß, gibt es in China nur sehr wenige Leute, die diese Fähigkeit beherrschen.

Glauben Sie nicht, dass alles gut wird, wenn Sie eine Sperre hinzufügen. Sie werden Probleme mit dem Deadlock-Problem haben. Wenn Ihre Programmlogik komplexer wird, wird es immer schwieriger, Sperren zu kontrollieren. Sobald Ihr Programm blockiert ist, ist es im Grunde zum Scheitern verurteilt.

Wenn ein bestimmter Thread hängt, werden alle Threads beendet

Stattdessen werden mehrere Prozesse betrachtet, was eigentlich viel einfacher ist.

Mit der prozessübergreifenden Kommunikation können Sie grundsätzlich jeden Datenaustausch erreichen. Beispielsweise wird ein Prozess zum gezielten Speichern von Datenstrukturen und Objekten verwendet, und alle Datenoperationen anderer Prozesse werden an diesen Prozess übergeben.

Mehrere Prozesse benötigen keine Sperren.

Mehrere Prozesse können verwendet werden Shared-Memory-Datenstrukturen zur Implementierung einiger Multithreading-Funktionen. Beispielsweise können Table und Atomic von Swoole den Datenaustausch realisieren, die Kosten sind jedoch sehr gering. In Zukunft werden auch Shared-Memory-Warteschlangen hinzugefügt

Die sogenannten PHP-Restriktionen Swoole sind völliger Unsinn. Durch die ordnungsgemäße Verwendung von Table, Atomic, SendMessage/PipeMessage und Task von Swoole kann asynchrone und nicht blockierende Codelogik vollständig implementiert werden.

In C++ geschriebene Programme haben eine bessere Leistung?

Das ist völlig blinder Aberglaube. C++ hat Vorteile für rechenintensive Programme. Der Kern des gleichzeitigen Servers ist IO, nicht umfangreiches, intensives Computing. Aus sprachlicher Sicht bietet C++ keine Vorteile. Darüber hinaus verfügen die meisten Datenstrukturen in C++ über entsprechende Implementierungen in PHP. Wenn dies nicht möglich ist, können Sie das Problem trotzdem lösen, indem Sie selbst eine spezielle Erweiterung schreiben.

Ein einzelner Server mit hoher Parallelität kann 10-W-Verbindungen aufrechterhalten und 3-5 W pro Sekunde gesendete und empfangene Nachrichten verarbeiten. Dieses Leistungsniveau kann bereits auf das Kernsystem von BAT angewendet werden.

Was bedeutet schnelle Entwicklungseffizienz?

Dieser Kollege sagte auch, dass die PHP-Serverentwicklung zwar schneller ist als C++, C++ jedoch dennoch erforderlich ist, um die ultimative Leistung zu erzielen. Ich werde Ihnen sagen, was es bedeutet, effizient zu sein. Ein gutes Programm zu entwickeln ist keine leichte Aufgabe und erfordert von Programmierern viel Zeit und Energie. Die Bedeutung der Verbesserung der Entwicklungseffizienz liegt nicht nur darin, dass ich die Arbeit in kürzerer Zeit abschließen kann, sondern auch darin, dass Sie in der verbleibenden Zeit Komponententests hinzufügen, Fehler beheben, die Benutzererfahrung verbessern, Details verbessern, unterstützende Tools bereitstellen, die Leistung optimieren und Schlüssel hinzufügen können Protokolle, erhöhen Sie die Anzahl der Überwachungsalarme und fügen Sie Notfallwiederherstellungspläne hinzu.


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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1668
14
PHP-Tutorial
1273
29
C#-Tutorial
1256
24
Die Kompatibilität von IIS und PHP: ein tiefer Tauchgang Die Kompatibilität von IIS und PHP: ein tiefer Tauchgang Apr 22, 2025 am 12:01 AM

IIS und PHP sind kompatibel und werden durch FASTCGI implementiert. 1.Iis leitet die .php -Dateianforderung über die Konfigurationsdatei an das FastCGI -Modul weiter. 2. Das FastCGI -Modul startet den PHP -Prozess, um Anforderungen zur Verbesserung der Leistung und Stabilität zu verarbeiten. 3. In den tatsächlichen Anwendungen müssen Sie auf Konfigurationsdetails, Fehlerdebuggen und Leistungsoptimierung achten.

Was passiert, wenn Session_Start () mehrmals aufgerufen wird? Was passiert, wenn Session_Start () mehrmals aufgerufen wird? Apr 25, 2025 am 12:06 AM

Mehrere Anrufe bei Session_Start () führen zu Warnmeldungen und möglichen Datenüberschreibungen. 1) PHP wird eine Warnung ausstellen und veranlassen, dass die Sitzung gestartet wurde. 2) Dies kann zu unerwarteten Überschreibungen von Sitzungsdaten führen. 3) Verwenden Sie Session_Status (), um den Sitzungsstatus zu überprüfen, um wiederholte Anrufe zu vermeiden.

Komponist: Unterstützung bei der PHP -Entwicklung durch KI Komponist: Unterstützung bei der PHP -Entwicklung durch KI Apr 29, 2025 am 12:27 AM

KI kann dazu beitragen, die Verwendung von Komponisten zu optimieren. Zu den spezifischen Methoden gehören: 1. Abhängigkeitsmanagementoptimierung: AI analysiert Abhängigkeiten, empfiehlt die beste Versionskombination und reduziert Konflikte. 2. Automatisierte Codegenerierung: AI generiert Composer.json -Dateien, die den Best Practices entsprechen. 3.. Verbesserung der Codequalität: KI erkennt potenzielle Probleme, liefert Optimierungsvorschläge und verbessert die Codequalität. Diese Methoden werden durch maschinelles Lernen und Technologien für die Verarbeitung von natürlichen Sprachen implementiert, um Entwicklern zu helfen, die Effizienz und die Codequalität zu verbessern.

Welche Bedeutung hat die Funktion Session_start ()? Welche Bedeutung hat die Funktion Session_start ()? May 03, 2025 am 12:18 AM

Session_Start () iscrucialinphPFormAnagingUSSERSIONS.1) ItinitiatesanewSessionifnoneExists, 2) Wiederaufnahmen und 3) setaSessionCookieforContinuityAcrossRequests, aktivierende Anwendungen wie

Was bedeutet 'Plattformunabhängigkeit' im Kontext von Java? Was bedeutet 'Plattformunabhängigkeit' im Kontext von Java? Apr 23, 2025 am 12:05 AM

Die Unabhängigkeit von Java's Platform bedeutet, dass der geschriebene Code auf jeder Plattform mit JVM ohne Änderung ausgeführt wird. 1) Java -Quellcode wird in Bytecode, 2) Bytecode kompiliert und von der JVM, 3) interpretiert und ausgeführt, 3) Die JVM bietet Speicherverwaltung und Müllsammlungsfunktionen, um sicherzustellen, dass das Programm auf verschiedenen Betriebssystemen ausgeführt wird.

H5: Schlüsselverbesserungen bei HTML5 H5: Schlüsselverbesserungen bei HTML5 Apr 28, 2025 am 12:26 AM

HTML5 bringt fünf wichtige Verbesserungen mit sich: 1. Semantische Tags verbessern die Code -Klarheit und SEO -Effekte; 2. Multimedia Support vereinfacht Video- und Audio -Einbettung; 3. Form -Verbesserung vereinfacht die Überprüfung; 4. Offline und lokaler Speicher verbessert die Benutzererfahrung. 5. Leinwand- und Grafikfunktionen verbessern die Visualisierung von Webseiten.

So verwenden Sie MySQL -Funktionen für die Datenverarbeitung und Berechnung So verwenden Sie MySQL -Funktionen für die Datenverarbeitung und Berechnung Apr 29, 2025 pm 04:21 PM

MySQL -Funktionen können zur Datenverarbeitung und -berechnung verwendet werden. 1. Grundlegende Nutzung umfasst String -Verarbeitung, Datumsberechnung und mathematische Operationen. 2. Erweiterte Verwendung umfasst die Kombination mehrerer Funktionen zur Implementierung komplexer Vorgänge. 3. Die Leistungsoptimierung erfordert die Vermeidung der Verwendung von Funktionen in der WHERE -Klausel und der Verwendung von Gruppenby- und temporären Tabellen.

Komponist: Der Paketmanager für PHP -Entwickler Komponist: Der Paketmanager für PHP -Entwickler May 02, 2025 am 12:23 AM

Composer ist ein Abhängigkeitsmanagement -Tool für PHP und verwaltet Projektabhängigkeiten über Composer.json -Datei. 1) Composer.json analysieren, um Abhängigkeitsinformationen zu erhalten; 2) Abhängigkeiten analysieren, um einen Abhängigkeitsbaum zu bilden; 3) Download und installieren Sie Abhängigkeiten vom Packagisten in das Lieferantenverzeichnis. 4) Datei Composer.lock erzeugen, um die Abhängigkeitsversion zu sperren, um die Konsistenz und die Wartbarkeit von Projekten zu gewährleisten.

See all articles