


Ich verstehe den Funktionsmechanismus von PHP nicht ganz. Bitte geben Sie mir eine L?sung.
Aug 04, 2016 am 09:20 AM
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: 訪問(wèn)io.php的請(qǐng)求都交給監(jiān)聽(tīng)9001的PHP-FPM進(jìn)程池處理 location = /io.php { include fastcgi_params; fastcgi_pass 127.0.0.1:9001; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } php-fpm: 正常腳本由靜態(tài)www池處理,阻塞腳本由動(dòng)態(tài)io池處理 [www] ;名為www的進(jìn)程池監(jiān)聽(tīng)9000端口,常駐進(jìn)程數(shù)量為固定4個(gè) listen = 127.0.0.1:9000 pm = static pm.max_children = 4 [io] ;名為io的進(jìn)程池監(jiān)聽(tīng)9001端口,進(jìn)程數(shù)常駐4個(gè),最大8個(gè) 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

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

Clothoff.io
KI-Kleiderentferner

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

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Benutzerspracheingabe wird erfasst und über die Mediarecorder-API des Front-End-JavaScript an das PHP-Backend gesendet. 2. PHP speichert das Audio als tempor?re Datei und ruft STTAPI (z. B. Google oder Baidu Voiceerkennung) auf, um sie in Text umzuwandeln. 3. PHP sendet den Text an einen KI -Dienst (wie OpenAigpt), um intelligente Antwort zu erhalten. 4. PHP ruft dann TTSAPI (wie Baidu oder Google Voice -Synthese) auf, um die Antwort in eine Sprachdatei umzuwandeln. 5. PHP streams die Sprachdatei zurück zum Spielen, um die Interaktion abzuschlie?en. Der gesamte Prozess wird von PHP dominiert, um eine nahtlose Verbindung zwischen allen Links zu gew?hrleisten.

Die Kernmethode zum Aufbau sozialer Freigabefunktionen in PHP besteht darin, dynamisch Freigabelinks zu generieren, die den Anforderungen jeder Plattform entsprechen. 1. Erhalten Sie zuerst die aktuelle Seite oder die angegebenen URL- und Artikelinformationen. 2. Verwenden Sie Urlencode, um die Parameter zu codieren. 3.. Splei? und generieren Teilenverbindungen gem?? den Protokollen jeder Plattform; 4. Zeigen Sie Links im vorderen Ende an, damit Benutzer klicken und freigeben k?nnen. 5. generieren Sie Dynamik OG -Tags auf der Seite, um die Anzeige der Freigabe inhaltlich zu optimieren. 6. Achten Sie darauf, dass Sie den Benutzereingaben entkommen, um XSS -Angriffe zu verhindern. Diese Methode erfordert keine komplexe Authentifizierung, weist nur geringe Wartungskosten auf und eignet sich für die meisten Anforderungen an den Inhaltsaustausch.

Um die Textfehlerkorrektur und die Syntaxoptimierung mit AI zu realisieren, müssen Sie die folgenden Schritte ausführen: 1. W?hlen Sie ein geeignetes AI -Modell oder ein geeignetes AI -Modell oder ein geeignetes AI -Modell wie Baidu, Tencent API oder Open Source NLP -Bibliothek aus; 2. Rufen Sie die API über die Curl oder das Guzzle von PHP auf und verarbeiten Sie die Rückgabeergebnisse. 3.. Informationen zur Fehlerkorrektur in der Anwendung anzeigen und erm?glichen den Benutzern, zu w?hlen, ob sie angenommen werden sollen. 4. Verwenden Sie PHP-L und PHP_CODESNIFFER für die Syntaxerkennung und -codeoptimierung. 5. sammeln Sie kontinuierlich Feedback und aktualisieren Sie das Modell oder die Regeln, um den Effekt zu verbessern. Konzentrieren Sie sich bei der Auswahl von AIAPI auf die Bewertung von Genauigkeit, Reaktionsgeschwindigkeit, Preis und Unterstützung für PHP. Die Codeoptimierung sollte den PSR -Spezifikationen folgen, Cache vernünftigerweise verwenden, zirkul?re Abfragen vermeiden, den Code regelm??ig überprüfen und x verwenden

1. Maximierung des kommerziellen Wertes des Kommentarsystems erfordert die Kombination der pr?zisen Lieferung native Werbung, benutzerbezahlte Wertsch?pfungsdienste (z. B. Bilder hochladen, Aufladungskommentare), den Incentive-Mechanismus basierend auf der Qualit?t der Kommentare und der Anonymen Daten Insight-Monetarisierung von Compliance; 2. Die Prüfungsstrategie sollte eine Kombination aus dynamischer Keyword-Filterung und Benutzerkennungsmechanismen vorab der Auditing einsetzen, die durch die Qualit?t der Kommentarqualit?t erg?nzt werden, um die hierarchische Inhaltsbelastung zu erreichen. 3. Die Anti-Pushing erfordert die Konstruktion einer mehrschichtigen Verteidigung: Recaptchav3 sensorlose überprüfung, Honeypot-Honeypot-Feldkennungroboter, IP und Zeitstempelfrequenzgrenze verhindert die Bew?sserung, und die Erkennung von Inhalten markiert verd?chtige Kommentare und st?ndig mit Angriffen.

PHP führt nicht direkt die KI-Image-Verarbeitung durch, sondern integriert sich über APIs, da es in der Webentwicklung und nicht in Bezug auf Computerintensive Aufgaben gut ist. Die API -Integration kann die professionelle Arbeitsteilung erreichen, die Kosten senken und die Effizienz verbessern. 2. Integration von Schlüsseltechnologien umfasst die Verwendung von Guzzle oder Curl zum Senden von HTTP-Anforderungen, JSON-Datencodierung und -decodierung, API-Schlüsselsicherheitsauthentifizierung, asynchroner Warteschlangenverarbeitungsaufgaben, robuster Fehlerbehebung und Wiederholungsmechanismus, Bildspeicherung und Anzeige. 3. Die gemeinsamen Herausforderungen sind API -Kosten au?er Kontrolle, unkontrollierbare Erzeugungsergebnisse, schlechte Benutzererfahrung, Sicherheitsrisiken und schwieriges Datenmanagement. In den Antwortstrategien werden Benutzerquoten und -darstellungen festgelegt, die Auswahl von ProPT-Anleitungen und mehrfizierende Auswahl, asynchrone Benachrichtigungen und Fortschrittsaufforderungen, wichtige Speicher- und Inhaltsprüfungen sowie Cloud-Speicher vorhanden.

PHP sorgt für die Inventarabzugsatomizit?t durch Datenbanktransaktionen und Forupdate -Reihenschl?sser, um eine hohe gleichzeitige überverl?ssigkeit zu verhindern. 2. Multi-Plattform-Inventarkonsistenz h?ngt von zentraler Verwaltung und ereignisgesteuerter Synchronisation ab, die API/Webhook-Benachrichtigungen und Nachrichtenwarteschlangen kombiniert, um eine zuverl?ssige Datenübertragung sicherzustellen. 3. Der Alarmmechanismus sollte in verschiedenen Szenarien niedrige Lagerbest?nde, Null/Negativ -Inventar, unerwünschte Verkaufszyklen, Nachschubzyklen und abnormale Schwankungsstrategien festlegen und die Auswahl von Dingtalk, SMS oder E -Mail -Verantwortlichen gem?? der Dringlichkeit ausw?hlen, und die Alarminformationen müssen vollst?ndig und frei sein, um die Anpassung und die Vergewaltigungsreaktion zu erreichen.

PhpisstillrelevantinMoDernEnterpriseEnvironments.1.ModerPhp (7.xand8.x) Angebote, strenge, jitkompilation und moderne Syntax, machte ma?geschneiderte Foreiglableforlarge-ScaleApplikationen

Die Kernrolle von Homebrew bei der Konstruktion der Mac -Umgebung besteht darin, die Installation und Verwaltung der Software zu vereinfachen. 1. Homebrew verarbeitet automatisch Abh?ngigkeiten und verkapselt komplexe Kompilierungs- und Installationsprozesse in einfache Befehle. 2. Bietet ein einheitliches Softwarepaket -?kosystem, um die Standardisierung des Software -Installationsorts und der Konfiguration zu gew?hrleisten. 3. Integriert Service -Management -Funktionen und kann Dienste leicht über Brewservices starten und stoppen. 4. Bequemes Software -Upgrade und -wartung und verbessert die Sicherheit und Funktionalit?t der Systeme.
