Inhaltsverzeichnis
Übergabe als Referenz: Übergeben Sie die Adresse des tatsächlichen Parameters an den formalen Parameter. Änderungen an den Zeilenparametern wirken sich auf den Wert des tatsächlichen Parameters aus. " >Übergabe als Referenz: Übergeben Sie die Adresse des tatsächlichen Parameters an den formalen Parameter. Änderungen an den Zeilenparametern wirken sich auf den Wert des tatsächlichen Parameters aus.
Verhaltenstyp: befohlen, das Modell zu installieren, um Beobachtung zu verhindern (Memo, Verantwortungskette, Befehl, Iterator, Vermittler, Zustand, Vorlagenmethode, Besucher, Beobachter, Strategie) " >Struktureller Typ: ist der Schlüssel zur Out-of-Band-Montage (Adapter, Brücke). , Fliegengewicht, Aussehen, Agent, Kombination, Dekoration) Verhaltenstyp: befohlen, das Modell zu installieren, um Beobachtung zu verhindern (Memo, Verantwortungskette, Befehl, Iterator, Vermittler, Zustand, Vorlagenmethode, Besucher, Beobachter, Strategie)
Wie kann man vorbeugen? " >Wie kann man vorbeugen?
Anforderungsinitialisierungsphase" >Anforderungsinitialisierungsphase
Heim Backend-Entwicklung PHP-Tutorial Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

Apr 07, 2021 am 09:39 AM
php

Verwandte Empfehlungen: „
Die neueste Zusammenfassung der PHP-Interviewfragen und Bewerbungsfragen


1. Die Bedeutung des Statuscodes im HTTP-Status

302: Die vorübergehende Übertragung ist erfolgreich und die Der angeforderte Inhalt wurde an den neuen Speicherort übertragen.

    401: Nicht autorisiert.
  • 403: Zugriff verboten.
  • 500: Interner Serverfehler
2. Wertübergabe und Referenzübergabe: Die Zuweisung des Werts des tatsächlichen Parameters zum formalen Parameter hat keinen Einfluss auf den Wert des Aktualparameters.
  • 3. Designmuster
  • Kreativer Typ: Mitarbeiter sind die Rohstoffe (Prototyp, Fabrik, Singleton, Generator, abstrakte Fabrik)

4. Codeverwaltung

Normalerweise wird ein Projekt von einem Team entwickelt, das seinen eigenen Code an den Versionsserver übermittelt, und der Projektleiter verwaltet ihn entsprechend der Version, was die Versionskontrolle erleichtert und die Entwicklungseffizienz verbessert Sie können bei Bedarf zur alten Version zurückkehren.

5. XSS-Angriff

Der Kern des XSS-Angriffs (Cross-Site-Scripting-Angriff) besteht darin, dass der Angreifer beim Durchsuchen der Seite den darin eingebetteten Code ausführt böswilliger Angriff auf den Benutzer.

Antwort: Verwenden Sie die Funktion htmlspecialchars(), um den übermittelten Inhalt zu filtern und die Sonderzeichen in der Zeichenfolge zu materialisieren.

6. CGI-, FastCGI-, PHP-FPM-Beziehungsdiagramm

In der gesamten Website-Architektur ist der Webserver (wie Apache) nur der Verteiler von Inhalten. Wenn der Client beispielsweise index.html anfordert, findet der Webserver diese Datei im Dateisystem und sendet sie an den Browser. Hier werden statische Daten verteilt.

Wenn die Anforderung index.php lautet, startet der Webserver nach Erhalt dieser Anforderung das entsprechende CGI-Programm. Hier ist der PHP-Parser. Als nächstes analysiert der PHP-Parser die Datei php.ini, initialisiert die Ausführungsumgebung, verarbeitet die Anforderung, gibt das verarbeitete Ergebnis in dem von CGI angegebenen Format zurück, beendet den Prozess und der Webserver gibt das Ergebnis an den Browser zurück ist ein vollständiger dynamischer PHP-Webzugriffsprozess.

Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

Webserver:

Bezieht sich im Allgemeinen auf Server wie Apache, Nginx, IIS, Lighttpd, Tomcat usw. Die neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen

    Webanwendung:
  • Bezieht sich im Allgemeinen auf PHP, Java, Asp.net und andere Anwendungen.
  • CGI:
  • ist ein Protokoll für den Datenaustausch zwischen Webserver und Webanwendung.
  • FastCGI:
  • Wie CGI handelt es sich um ein Kommunikationsprotokoll, das jedoch einige Effizienzoptimierungen aufweist als CGI. Ebenso ähnelt das SCGI-Protokoll FastCGI.
  • PHP-CGI:
  • ist das Schnittstellenprogramm von PHP (Webanwendung) zum vom Webserver bereitgestellten CGI-Protokoll.
  • PHP-FPM:
  • ist ein Schnittstellenprogramm für das von PHP (Webanwendung) bereitgestellte FastCGI-Protokoll. Es bietet auch eine relativ intelligente Aufgabenverwaltung.
  • 7. MVC
  • MVC ist ein Entwicklungsmodell, das hauptsächlich in drei Teile unterteilt ist:
  • m(Modell), das ist das Modell, ist für den Betrieb der Daten verantwortlich;
  • v(Ansicht), das ist die Ansicht, ist für die Anzeige der Rezeption verantwortlich; ist der Controller, der für die Geschäftslogik verantwortlich ist. PHP verwendet einen Mechanismus zur Referenzzählung (Garbage Collection). Jedes Objekt enthält einen Referenzzähler. Wenn eine Referenz mit dem Objekt verbunden ist, wird der Zähler um 1 erhöht. Wenn die Referenz den Wohnraum verlässt oder auf NULL gesetzt wird, wird der Zähler um 1 dekrementiert. Wenn der Referenzzähler eines Objekts Null erreicht, gibt PHP den von ihm belegten Speicherplatz frei. 9. Lebenszyklus des CLI-Modus )
  • Hauptsächlich beschäftigt mit PHP-Framework, Zend-Engine Der Initialisierungsvorgang
php_request_startup()

Für fpm ist es eine Phase, nachdem der Arbeitsprozess die Anforderungsdaten gelesen und analysiert hat

Skriptausführungsphase


php_execute_script()

PHP analysieren Syntax und generieren Sie einen abstrakten Syntaxbaum

10. PHP-FPM-Betriebsmechanismus

FastCGI ist ein Kommunikationsprotokoll zwischen Webservern (wie Nginx, Apache) und Prozessoren (wie PHP). php-fpm ist ein blockierender Single-Thread-Modell-Prozessmanager im PHP-FastCGI-Betriebsmodus. Er verfügt über eine Single-Master- und Multi-Worker-Struktur. Derselbe Worker-Prozess kann jeweils nur eine Anfrage bearbeiten. Nachdem PHP die Anfrage verarbeitet hat, leitet es das analysierte Ergebnis über das FastCGI-Protokoll an den Webserver weiter, und der Webserver gibt es an den Benutzer zurück.

Grundlegende Implementierung

PHP-FPM ist die Implementierung von Fast-CGI, die Prozessverwaltungsfunktionen einschließlich Master- und Worker-Prozessen bereitstellt:

  • Master erstellt und überwacht Sockets, forkt mehrere Worker-Prozesse und teilt sie im Speicher Ruft den Status des Workers ab und steuert dann den Worker-Prozess über Signale. Worker nimmt Anfragen frei an. Worker – Anforderungsverarbeitung. Worker-Prozess akzeptiert kontinuierlich Anfragen Nachdem die Analyse abgeschlossen ist, wird mit der Ausführung des PHP-Skripts begonnen und die Anforderung wird nach Abschluss der Ausführung geschlossen. Die Schritte für jeden Worker zum Verarbeiten von Anfragen sind wie folgt:
  • Warten auf Anfragen: Der Worker-Prozess ist in fcgi_accept_request() blockiert und wartet auf Anfragen.

Anfrage analysieren: Nachdem die Fastcgi-Anfrage eingegangen ist, wird sie vom Worker empfangen und beginnt dann mit dem Empfangen und Analysieren der Anfragedaten, bis die Anfragedaten vollständig eintreffen. Anforderungsinitialisierung: Führen Sie php_request_startup() aus.

PHP-Skript ausführen.

    Anfrage schließen.
  1. In der Struktur des Worker-Prozesses gibt es einen Parameter zum Aufzeichnen der aktuellen Phase des Workers fpm_scoreboard_proc_s->request_stage. Während eines Anforderungsprozesses wird dieser Wert auf die folgenden Werte gesetzt:
  2. FPM_REQUEST_ACCEPTING: Warten auf die Anfragephase.
  3. FPM_REQUEST_READING_HEADERS: Fastcgi-Anfrage-Header-Phase lesen.
  4. FPM_REQUEST_INFO: Anforderungsinformationsphase abrufen In dieser Phase werden die angeforderte Methode, die Abfragezeichenfolge, die Anforderungs-URI und andere Informationen in der fpm_scoreboard_proc_s-Struktur jedes Arbeitsprozesses gespeichert.

FPM_REQUEST_EXECUTING: PHP-Skriptphase ausführen.

    FPM_REQUEST_END: ​​​​Nicht verwendet.
  • FPM_REQUEST_FINISHED: Anforderungsverarbeitung abgeschlossen.
  • master – Prozessverwaltung
  • master kehrt nach dem Aufruf von fpm_run() nicht mehr zurück, sondern tritt in eine Ereignisschleife ein. Danach wird der Master immer mehrere Ereignisse verarbeiten. Wir haben zunächst die drei verschiedenen Prozessverwaltungsmethoden von Fpm vorgestellt. Welcher Modus verwendet werden soll, kann über pm in der conf-Konfiguration angegeben werden, zum Beispiel pm=dynamic.
  • Statischer Modus (statisch): Diese Methode ist relativ einfach. Beim Start gibt der Master eine entsprechende Anzahl von Arbeitsprozessen gemäß der Konfiguration von pm.max_children aus, d. h. die Anzahl der Arbeitsprozesse ist festgelegt.

Dynamischer Modus (dynamisch): Dieser Modus wird häufiger verwendet. Wenn Fpm startet, wird eine bestimmte Anzahl von Workern gemäß der Konfiguration von pm.start_servers initialisiert. Wenn der Master während des Betriebs feststellt, dass die Anzahl der inaktiven Worker geringer ist als die konfigurierte Anzahl von pm.min_spare_servers (was darauf hinweist, dass zu viele Anforderungen vorliegen und die Worker diese nicht verarbeiten können), wird der Worker-Prozess gegabelt, jedoch die Gesamtzahl Anzahl der Arbeitnehmer darf pm.max_children nicht überschreiten. Wenn der Master feststellt, dass die Anzahl der inaktiven Arbeiter pm.max_spare_servers überschreitet (was darauf hinweist, dass zu viele inaktive Arbeiter vorhanden sind), werden einige Arbeiter getötet, um zu vermeiden, dass zu viele Ressourcen belegt werden. Der Master verwendet diese vier Werte, um die Anzahl dynamisch zu steuern der Arbeiter. OnDemand-Modus (OnDemand): Dieser Modus ist dem herkömmlichen CGI sehr ähnlich. Er weist beim Start keine Worker-Prozesse zu. Er benachrichtigt den Master-Prozess, um den Worker-Prozess zu forken, d Untergeordneter Prozess, nachdem die Anfrage zur Verarbeitung eingegangen ist. Die Gesamtzahl der Worker überschreitet nicht pm.max_children. Nach Abschluss der Verarbeitung wird der Worker-Prozess nicht sofort beendet. Er wird beendet, wenn die Leerlaufzeit pm.process_idle_timeout überschreitet.

Der Master-Prozess tritt in die Ereignisschleife fpm_event_loop() ein. Bei dieser Methode durchläuft der Master mehrere vom Master registrierte E/A- und Timer-Ereignisse. Wenn ein Ereignis ausgelöst wird, wird der spezifische Handler zur Verarbeitung zurückgerufen.
  • 11. Speicherzuweisungsprozess
  • Bewerben Sie sich vorab für ein Stück Speicher und verwalten Sie es intern. Wenn die Anwendung Speicher beantragt, wird sie ab diesem Teil angewendet, und wenn sie freigegeben wird, wird sie freigegeben Zurück zur Speicherverwaltung. Dieses Design kann den zusätzlichen Leistungsverbrauch des Betriebssystems vermeiden, der durch die Anwendung und die Freigabe von kleinem Speicher verursacht wird.

12. Implementierung des PHP-Arrays

Die zugrunde liegende Implementierung des PHP-Arrays ist eine Hash-Tabelle (auch Hash-Tabelle genannt). Die Hash-Tabelle ist eine Datenstruktur, die basierend auf dem Schlüssel (Schlüssel) direkt auf den Speicherort zugreift. Sein Schlüsselwert Es gibt eine Zuordnungsfunktion, die den von der Zuordnungsfunktion erhaltenen Hash-Wert direkt auf den entsprechenden Wertwert gemäß dem Schlüssel indizieren kann, ohne dass ein Schlüsselwortvergleich erforderlich ist. Unter idealen Umständen ist die Sucheffizienz unabhängig von Hash-Konflikten der Hash-Tabelle ist sehr hoch, die Zeitkomplexität beträgt O (1).

13. Abhängigkeitsinjektion

Konzept: bezieht sich auf die Art und Weise, wie andere Dienste, von denen der Dienst abhängt, nicht vom Dienst selbst erstellt, sondern von außen übergeben werden.

Wie wird es erreicht? Antwort: Im Allgemeinen erfolgt die Implementierung mithilfe von Reflexion. Welches Problem kann

lösen? Antwort: Reduzieren Sie die Kopplung zwischen Dienstmodulen. Beim Schreiben von Code müssen Sie die spezifische Implementierung externer Dienste nicht berücksichtigen. Sie müssen nur den Dienst basierend auf der Schnittstelle verwenden.

14. Objektorientiert

Konzept: Objektorientiert ist eine Entwurfsmethode für Programme, die dazu beiträgt, die Wiederverwendbarkeit von Programmen zu verbessern und die Programmstruktur klarer zu machen.

Hauptmerkmale: Kapselung, Vererbung, Polymorphismus.

Fünf Grundprinzipien: Prinzip der Einzelverantwortung; Prinzip der offenen und geschlossenen Schnittstelle;


Dieser Artikel wurde zuerst auf der Website LearnKu.com veröffentlicht.

Verwandte Empfehlungen: „Zusammenfassung der PHP-Interviewfragen 2021 (Sammlung)

Das obige ist der detaillierte Inhalt vonDie neueste Zusammenfassung konzeptioneller Fragen für PHP-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
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)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles