suchen
HeimBackend-EntwicklungPHP-TutorialIch 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:
Ich verstehe den Funktionsmechanismus von PHP nicht ganz. Bitte geben Sie mir eine Lösung.
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.

Ein bisschen gesunder Menschenverstand über PHP:

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.

Schließlich ähneln PHP-Daemon-Dienste wie Swoole/WorkerMan, die unter CLI funktionieren, Java/Node.

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. PHPDie 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! javaKapseln 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! setTimeoutEs 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

Kurz gesagt,

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 HTML

PHP 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 keine

- oder setInterval-Funktion ähnlich wie js hat? setTimeout

PHP verfügt über eine Verzögerungsfunktion (z. B.

) 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

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
Die fortgesetzte Verwendung von PHP: Gründe für seine AusdauerDie fortgesetzte Verwendung von PHP: Gründe für seine AusdauerApr 19, 2025 am 12:23 AM

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: Untersuchung ihrer Ähnlichkeiten und UnterschiedePHP und Python: Untersuchung ihrer Ähnlichkeiten und UnterschiedeApr 19, 2025 am 12:21 AM

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 und Python: Verschiedene Paradigmen erklärtPHP und Python: Verschiedene Paradigmen erklärtApr 18, 2025 am 12:26 AM

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 und Python: Ein tiefes Eintauchen in ihre GeschichtePHP und Python: Ein tiefes Eintauchen in ihre GeschichteApr 18, 2025 am 12:25 AM

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.

Wählen Sie zwischen PHP und Python: Ein LeitfadenWählen Sie zwischen PHP und Python: Ein LeitfadenApr 18, 2025 am 12:24 AM

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 und Frameworks: Modernisierung der SprachePHP und Frameworks: Modernisierung der SpracheApr 18, 2025 am 12:14 AM

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.

Auswirkungen von PHP: Webentwicklung und darüber hinausAuswirkungen von PHP: Webentwicklung und darüber hinausApr 18, 2025 am 12:10 AM

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

Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Apr 17, 2025 am 12:25 AM

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.

See all articles

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows

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

Dreamweaver CS6

Visuelle Webentwicklungstools

mPDF

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

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung