


Ich verstehe den Funktionsmechanismus von PHP nicht ganz. Bitte geben Sie mir eine Lösung.
Wie Java und NodeJS sollte es ein Programm sein, das kontinuierlich auf dem Server läuft. Dieses Programm wird immer ausgeführt, belegt die CPU und den Speicher und verarbeitet die Netzwerkanfrage, wenn es sie empfängt.
PHP scheint kein Programm zu sein, es ähnelt eher HTML. Es wird nur ausgeführt, wenn niemand auf den PHP-Dienst zugreift der CPU. Das ist es.
Wenn dies der Fall ist, ist es für PHP dann nicht schwierig, Datenbankklassen zu kapseln? Weil jeder Benutzer hereinkommt und einen Prozess für ihn öffnen muss und die Prozesse nicht miteinander verbunden sind. Benutzer A kommt herein und öffnet eine Datenbankverbindung für ihn, und Benutzer B kommt herein und öffnet eine separate Datenbankverbindung für ihn. Stellt PHP also nicht ständig eine Verbindung zur Datenbank her und trennt sie auch wieder? Nachdem es mehr Benutzer gibt, sollte der Overhead sehr hoch sein, oder?
Ist das auch der Grund, warum PHP keine setInterval
- oder setTimeout
-Funktionen ähnlich wie js hat?
Antwortinhalt:
Wie Java und NodeJS sollte es ein Programm sein, das kontinuierlich auf dem Server läuft. Dieses Programm wird immer ausgeführt, belegt die CPU und den Speicher und verarbeitet die Netzwerkanfrage, wenn es sie empfängt.
PHP scheint kein Programm zu sein, es ähnelt eher HTML. Es wird nur ausgeführt, wenn niemand auf den PHP-Dienst zugreift ein bisschen CPU. Das ist es.
Wenn dies der Fall ist, ist es für PHP dann nicht schwierig, Datenbankklassen zu kapseln? Weil jeder Benutzer hereinkommt und einen Prozess für ihn öffnen muss und die Prozesse nicht miteinander verbunden sind. Benutzer A kommt herein und öffnet eine Datenbankverbindung für ihn, und Benutzer B kommt herein und öffnet eine separate Datenbankverbindung für ihn. Stellt PHP also nicht ständig eine Verbindung zur Datenbank her und trennt sie auch wieder? Wenn es mehr Benutzer gibt, sollten die Kosten sehr hoch sein, oder?
Ist das auch der Grund, warum PHP keine setInterval
- oder setTimeout
-Funktionen ähnlich wie js hat?
Nehmen Sie PHP-FPM als Beispiel (ähnlich wie Apache MOD_PHP), um über den Betriebsmechanismus von PHP zu sprechen.
Zuallererst ist PHP-FPM ein in C implementierter Multiprozess-FastCGI-Dienst.
Jeder PHP-FPM-Arbeitsprozess Es verfügt über einen integrierten PHP-Interpreter, ist nicht auf PHP-CGI angewiesen und unterstützt Hintergrundpersistenz, z. B. Konfiguration:
<code>nginx.conf: 访问io.php的请求都交给监听9001的PHP-FPM进程池处理 location = /io.php { include fastcgi_params; fastcgi_pass 127.0.0.1:9001; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } php-fpm: 正常脚本由静态www池处理,阻塞脚本由动态io池处理 [www] ;名为www的进程池监听9000端口,常驻进程数量为固定4个 listen = 127.0.0.1:9000 pm = static pm.max_children = 4 [io] ;名为io的进程池监听9001端口,进程数常驻4个,最大8个 listen = 127.0.0.1:9001 pm = dynamic pm.max_children = 8 pm.start_servers = 4 pm.min_spare_servers = 4 pm.max_spare_servers = 4</code>
Der PHP-FPM-Hauptprozess wird verwendet, um diese Arbeitsprozesse zu verwalten. Wenn beispielsweise ein Arbeitsprozess abgebrochen wird, erstellen Sie sofort einen neu.
PHP-FPM stellt pm.status_path bereit, um den gesamten Satz von PHP-FPM anzuzeigen. Der Arbeitsstatus des FPM-Dienstes.
Unterstützt werden beispielsweise das Aufgeben nach einer Zeitüberschreitung der Ausführung, das automatische Neustarten des Arbeitsprozesses nach Verarbeitung der angegebenen Anzahl von Anforderungen und die langsame Protokollierung (Ermitteln zeitaufwändiger Dateien und Funktionen).
Und nach der Aktivierung dauerhafter Verbindungen kann jeder PHP-FPM-Arbeitsprozess eine lange Verbindung zu MySQL aufrechterhalten, ohne sie freizugeben, wodurch wiederholte Verbindungen zur Datenbank vermieden werden.
Die folgende Abbildung zeigt beispielsweise zwei PHP-FPM-Prozesse und MySQL 2 lange Verbindungen aufgebaut:
Darüber hinaus implementieren die PECL-Erweiterungen für Memcached und Redis auch die Funktion persistenter Verbindungen.
Wir haben oben über das PHP-FPM-System gesprochen. Lassen Sie uns nun über den Lebenszyklus von PHP-Skripten unter dem PHP-FPM-System sprechen.
Der Lebenszyklus von Mengen (einschließlich globaler Variablen) in PHP-Skripten existiert nur für einen Wenn die Anforderungsverarbeitung abgeschlossen ist, gibt PHP-FPM die Ressourcen automatisch einmal pro Anforderung frei. Diese Art der Speicherfreigabe basiert auf der Referenzzählung, bevor das Programm beendet wird
Die hier freigegebenen Ressourcen beziehen sich auf die im Skript gesteuerten Ressourcen und beeinträchtigen weder den PHP-FPM-Residentprozess, noch wird der PHP-FPM-Prozess heruntergefahren, noch wird PHP-FPM die dauerhafte Verbindung schließen PHP-FPM ist nur für die Eingabe von PHP-Skripten und die Ausführung von PHP-Operationen verantwortlich. Wenn die ZendOpcache-Unterstützung hinzugefügt wird, können alle durch das Parsen von PHP-Skripten generierten Opcodes für die direkte Interpretation und Ausführung beim nächsten Mal zwischengespeichert werden opcache.file_cache opcode implementiert den Quellcodeschutz.
Datenbankverbindungspool: Die persistente PHP-Verbindung ist ein natürlicher und transparenter Verbindungspool, der keinen Programmeingriff erfordert und MySQL/Memcached/Redis usw. unterstützt.
Speicherresident: PHP- FPM-Prozess. Der Opcode von Skripten, die von ZendOpcache und Yac, entwickelt von Bird Brother, zwischengespeichert werden, sind alle speicherresident.
Garbage Collection: PHP-FPM gibt Ressourcen einmal pro Anfrage frei, was die Rolle von GC basierend auf der Referenzzählung schwächt.
Obwohl ich bereits von der Arbeit gekommen bin, kann ich es nicht ertragen zu sehen, dass das, was Sie gesagt haben, PHP
ähnlich ist wie html
. PHP
Die Funktion ist nicht vergleichbar mit html
. Nehmen Sie Ihr Beispiel für die Verbindung mit einer Datenbank. Kann der Datenbankinhalt gelesen werden? Auf keinen Fall! Außerdem haben Sie gesagt, dass mehrere Benutzer eine Datenbankverbindung öffnen müssen, damit jeder Benutzer darauf zugreifen kann html
. Das Kapseln einer Datenbankverbindungsklasse ist sehr einfach, daher werde ich es nicht veröffentlichen PHP
. Zu jeder Datenbankerweiterung im PHP-Handbuch gibt es eine Einführung und Beispiele für Ihre eigene Referenz. Da Sie code
erwähnt haben, müssen Sie auch das Singleton-Muster kennen! java
Kapseln Sie eine Datenbankverbindungsklasse und richten Sie den Singleton-Modus ein, um eine statische Datenverbindung zu erreichen. Egal wie viele Benutzer zu Besuch kommen, rufen Sie es einfach direkt auf und Sie können mehrere Prozesse öffnen, anstatt, wie Sie sagten, mehrere Benutzer zu besuchen. Und die PHP
und setInterval
, die Sie erwähnt haben, sind geplante Hinrichtungen! setTimeout
Es ist auch ok! Definieren Sie zunächst die Funktionen, die PHP implementieren möchte, und legen Sie dann PHP
auf dem Server fest. Legen Sie die Parameter einfach selbst fest, oder es gibt auch crontab
. Ich werde die Funktionen usw. nicht auflisten und die Antworten habe ich noch nicht formatiert, sodass Sie sie sich zunächst ansehen können. Ich muss von der Arbeit gehen und gehen. Wenn Sie Fragen haben, besprechen wir sie morgen weiter php-fpm
ist eine sehr gute Sprache mit sehr leistungsstarken Funktionen ... und sie entwickelt sich immer noch weiter ... leicht zu erlernen und zu verstehen! BruderPHP
PHP kann sich nicht im Speicher befinden. Nachdem jede HTTP-Anfrage geöffnet wurde, wird eine Verbindung zur Datenbank hergestellt. Wenn die Anfrage abgeschlossen ist, werden die Datenbankverbindung und verschiedene Variablen freigegeben.
Ihr Gesamtverständnis ist korrekt, aber nicht alle Sprachen sind speicherresident wie Java, weder Python, Go noch C. PHP verfügt nicht über das Konzept eines Verbindungspools. Der Prozess wird nach seiner Ausführung freigegeben und nicht anderen Prozessen zur Verwendung überlassen
Hier ist der Link zum ersten Abschnitt von Kapitel 2 von „Detailliertes Verständnis des PHP-Kerns“:
http://www.php-internals.com/...
Ihre Zweifel kommen nur daher, dass Sie nur die Oberfläche gesehen haben.
Wenn Sie Swoole verwendet haben, werden Sie diese Frage wahrscheinlich nicht stellen.
Äh, Sie dachten, PHP-FPM wäre nicht angekommen. . .
Und PHP scheint kein Programm zu sein, eher wie HTMLPHP kann nur in HTML eingebettet werden, aber es unterscheidet sich völlig von HTML. PHP verfügt über viele Erweiterungen, die unterschiedliche Dinge können.
Es wird nur ausgeführt, wenn niemand auf den PHP-Dienst zugreift, belegt PHP nicht einmal ein bisschen Speicher oder ein bisschen CPU. Stimmt das?PHP verfügt hauptsächlich über zwei Betriebsmodi (außer CLI):
1. Mod_php wird durch Apache dargestellt, zu diesem Zeitpunkt wird die Arbeit an Apache übergeben.
2. PHP-FPM (FastCGI-Prozessmanager), der von Nginx/Lighttpd verwendet wird. Dies ist ein residenter Daemon-Prozess.
Wie kann es also sein, dass es nicht CPU und Speicher belegt?
Wenn dies der Fall ist, ist es für PHP dann nicht schwierig, Datenbankklassen zu kapseln? Weil jeder Benutzer hereinkommt und einen Prozess für ihn öffnen muss und die Prozesse nicht miteinander verbunden sind. Benutzer A kommt herein und öffnet eine Datenbankverbindung für ihn, und Benutzer B kommt herein und öffnet eine separate Datenbankverbindung für ihn. Stellt PHP also nicht ständig eine Verbindung zur Datenbank her und trennt sie auch wieder? Wenn es mehr Benutzer gibt, sollten die Kosten sehr hoch sein, oder?Am Beispiel von MySQL: Wenn Sie beim Herstellen einer Verbindung pconnect (persistente Verbindung) auswählen, wird die bestehende Verbindung beim nächsten Mal direkt verwendet und die Verbindung wird nicht geschlossen.
PDO verfügt auch über eine lange Verbindungsoption.
Ist das auch der Grund, warum PHP keinePHP verfügt über eine Verzögerungsfunktion (z. B.- oder
setInterval
-Funktion ähnlich wie js hat?setTimeout
) und die Genauigkeit ist viel höher als die von JS (Mikrosekundenebene). sleep()
Es ist so lebhaft. Die Antworten und Kommentare von @ivanilla enthalten viele Informationen, danke.
Tatsächlich denke ich, dass der Funktionsmechanismus von PHP in der Antwort auf die Frage des ursprünglichen Posters darin besteht, Skripte zu interpretieren und auszuführen. PHP ist eine Skriptsprache, die serverseitige Unterstützung für kleine und mittlere Websites bietet. Sie bietet ein gutes Gleichgewicht zwischen Entwicklungsgeschwindigkeit und Betriebseffizienz.
Die anderen Ansichten des Posters sind also von geringem Wert, und selbst die Debatte ist bedeutungslos. Wenn PHP die Dinge hat, die Sie sich vorstellen, wird niemand diese Sprache verwenden, und jeder könnte genauso gut Java verwenden.
Der Autor verfügt über keine Grundkenntnisse in PHP, daher muss er PHP-Neuling sein. Vereinfacht ausgedrückt kann PHP in zwei Modi ausgeführt werden, z. B. durch Ausführen von php xxx.php in der Shell. Der andere besteht darin, die Ausführung nur zu starten, wenn eine Netzwerkanforderung vorliegt Einige werden im Apache-Erweiterungsmodus kompiliert, es gibt auch den Fast-CGI-Modus. Die mod_php-Methode von Apache besteht darin, einen Prozess zur Ausführung mit einer Anfrage zu starten. Sie ist sehr effizient und verfügt über verschiedene Parameteroptimierungen. Fast-CGI ist viel effizienter. Spezielle Poster können das entsprechende Handbuch lesen und üben.
Die Jungs oben sind so geduldig

Was noch beliebt ist, ist die Benutzerfreundlichkeit, die Flexibilität und ein starkes Ökosystem. 1) Benutzerfreundliche und einfache Syntax machen es zur ersten Wahl für Anfänger. 2) eng integriert in die Webentwicklung, eine hervorragende Interaktion mit HTTP -Anforderungen und Datenbank. 3) Das riesige Ökosystem bietet eine Fülle von Werkzeugen und Bibliotheken. 4) Active Community und Open Source Nature passen sie an neue Bedürfnisse und Technologietrends an.

PHP und Python sind beide Programmiersprachen auf hoher Ebene, die häufig für die Aufgaben der Webentwicklung, Datenverarbeitung und Automatisierung verwendet werden. 1.PHP wird häufig verwendet, um dynamische Websites und Content -Management -Systeme zu erstellen, während Python häufig zum Erstellen von Webrahmen und Datenwissenschaften verwendet wird. 2.PHP verwendet Echo, um Inhalte auszugeben, Python verwendet Print. 3. Beide unterstützen die objektorientierte Programmierung, aber die Syntax und die Schlüsselwörter sind unterschiedlich. 4. PHP unterstützt eine schwache Konvertierung, während Python strenger ist. 5. Die PHP -Leistungsoptimierung umfasst die Verwendung von Opcache und asynchrone Programmierung, während Python Cprofile und asynchrone Programmierungen verwendet.

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP bleibt im Modernisierungsprozess wichtig, da es eine große Anzahl von Websites und Anwendungen unterstützt und sich den Entwicklungsbedürfnissen durch Frameworks anpasst. 1.PHP7 verbessert die Leistung und führt neue Funktionen ein. 2. Moderne Frameworks wie Laravel, Symfony und Codesigniter vereinfachen die Entwicklung und verbessern die Codequalität. 3.. Leistungsoptimierung und Best Practices verbessern die Anwendungseffizienz weiter.

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Dreamweaver CS6
Visuelle Webentwicklungstools

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung