Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Analyse der PHP-Fehlerbehandlung, des automatischen Ladens, des Stapelspeichers und des Betriebsmodus

Eine kurze Analyse der PHP-Fehlerbehandlung, des automatischen Ladens, des Stapelspeichers und des Betriebsmodus

零到壹度
零到壹度Original
2018-04-12 10:30:002106Durchsuche

Der Inhalt dieses Artikels besteht darin, Ihnen eine kurze Analyse der PHP-Fehlerbehandlung, des automatischen Ladens, des Stapelspeichers und des Betriebsmodus zu geben. Freunde in Not können sich darauf beziehen 🎜>

PHPFehlerbehandlung

PHPFehlerstufe:

E_ERROR ist ein schwerwiegender Fehler, der das Skript beendet. Der Wert ist 1

E_WARNING Warnfehler, der eine Eingabeaufforderung ausgibt und den Vorgang nicht beendet. Der Wert ist 2

E_PARSE Syntaxanalysefehler treten nur während der Kompilierung auf vom Analysator erzeugt. Der Wert ist 4

E_NOTICE meldet Fehler während der Laufzeit und weist darauf hin, dass das Skript möglicherweise auf Fehler stößt. Der Wert ist 8

E_CORE_ERROR während der PHP-Initialisierung Startup Während des Vorgangs ist ein schwerwiegender Fehler aufgetreten. Dieser Fehler ähnelt E_ERROR, wird jedoch vom Kern der PHP-Engine generiert. Der Wert ist 16

E_CORE_WARNING Eine Warnung (nicht schwerwiegender Fehler), die während des PHP-Initialisierungsstarts aufgetreten ist. Ähnlich wie E_WARNING, aber vom PHP-Engine-Kern generiert. Der Wert ist 32

E_COMPILE_ERROR Schwerwiegender Fehler bei der Kompilierung. Ähnlich wie E_ERROR, aber von der Zend-Skript-Engine generiert. Der Wert ist 64

E_COMPILE_WARNING Warnung zur Kompilierungszeit (nicht schwerwiegender Fehler). Ähnlich wie E_WARNING, jedoch von der Zend-Skript-Engine generiert. Der Wert ist 128

E_USER_ERROR Vom Benutzer generierte Fehlermeldung. Ähnlich wie E_ERROR, wird jedoch vom Benutzer mithilfe der PHP-Funktion trigger_error() im Code generiert. Der Wert ist 256

E_USER_WARNING Vom Benutzer generierte Warnmeldung. Ähnlich wie E_WARNING, wird jedoch vom Benutzer mithilfe der PHP-Funktion trigger_error() im Code generiert. Der Wert ist 512

E_USER_NOTICE Vom Benutzer generierte Benachrichtigungsinformationen. Ähnlich wie E_NOTICE, wird jedoch vom Benutzer mithilfe der PHP-Funktion trigger_error() im Code generiert. Der Wert 1024

E_STRICT ermöglicht PHP, Änderungen am Code vorzuschlagen, um die beste Interoperabilität und Vorwärtskompatibilität des Codes sicherzustellen. Der Wert ist 2048

E_RECOVERABLE_ERROR, ein schwerwiegender Fehler, der abgefangen werden kann. Es weist darauf hin, dass ein potenziell gefährlicher Fehler aufgetreten ist, der jedoch nicht zu einer Instabilität der PHP-Engine geführt hat. Wenn der Fehler nicht von einem benutzerdefinierten Handler abgefangen wird (siehe set_error_handler()), wird er zu einem E_ERROR und das Skript wird beendet. Der Wert ist 4096

E_DEPRECATED Laufzeitbenachrichtigung. Wenn diese Option aktiviert ist, wird eine Warnung vor Code ausgegeben, der in zukünftigen Versionen möglicherweise nicht ordnungsgemäß funktioniert. Der Wert ist 8192

E_USER_DEPRECATED Vom Benutzer generierte Warnmeldung. Ähnlich wie E_DEPRECATED, wird jedoch vom Benutzer mithilfe der PHP-Funktion trigger_error() im Code generiert. Der Wert 16384

E_ALL stellt alle Fehler- und Warninformationen außer E_STRICT dar. Der Wert ist 30719

Fehler, die mithilfe bitweiser Operatorkombinationen angezeigt oder maskiert werden (Beurteilung binärer Berechtigungen)

PhpÜber die Fehlerkonfiguration

error_reporting Legen Sie die Ebene der Fehlerberichterstattung fest, Die Ebene Die Einstellung ist oben zu sehen

Der Standardwert ist E_ALL & ~E_NOTICE, was bedeutet, dass alle Fehler außer E_NOTICE und E_STRICT angezeigt werden

Die E_STRICT-Fehlerstufe ist nicht in E_ALL enthalten. Sie müssen diese Stufe explizit aktivieren, damit sie angezeigt wird.

Es gibt keine Möglichkeit Verwenden Sie Fehlerebenenkonstanten außerhalb von PHP. Sinnvoll können Sie stattdessen Dezimalzahlen verwenden, z. B. 2147483647, einschließlich aller Fehler.

display_errors Gibt an, ob Fehler ausgegeben werden sollen screen

Obwohl Sie ini_set verwenden können, um es zurückzusetzen, kann es nicht gesetzt werden, wenn ein schwerwiegender Fehler in PHP auftritt

display_startup_errors Ob Startfehler angezeigt werden sollen

log_errors Ob die Fehlerinformationen des Skripts protokolliert werden sollen log

log_errors_max_len

Legen Sie die maximale Anzahl von Bytes in log_errors fest. Informationen über die Fehlerquelle werden zu error_log hinzugefügt. Der Standardwert ist 1024. Bei der Einstellung 0 gibt es keine Begrenzung der Länge. Diese Längeneinstellung begrenzt protokollierte Fehler, angezeigte Fehler und $php_errormsg.

ignore_repeated_errors

Wiederholte Fehlermeldungen nicht protokollieren,

ignore_repeated_source

Beim Ignorieren wiederholter Nachrichten wird auch die Quelle der Nachricht ignoriert. Wenn diese Einstellung aktiviert ist, wird bei doppelten Nachrichten nicht erfasst, ob sie von unterschiedlichen Dateien oder unterschiedlichen Quellcodezeilen generiert wurden.

report_memleaks

Wenn dieser Parameter auf Aus eingestellt ist, werden Informationen zu Speicherlecks nicht angezeigt (in stdout oder Log-Mitte). Dieser Bericht wird auf Posix-Plattformen an stderr gesendet. Unter Windows wird er mit OutputDebugString() an den Debugger gesendet und kann mit Tools wie » DbgView angezeigt werden. Dies ist nur für die Debug-Kompilierung wirksam und error_reporting muss E_WARNING enthalten, um zu funktionieren

track_errors

falls aktiviert, Der letzte Fehler wird immer in der Variablen $php_errormsg vorhanden sein.

html_errors

Schließen Sie das HTML-Tag in der Fehlermeldung. Diese neue HTML-formatierte Fehlermeldung ist anklickbar und leitet den Benutzer zu einer Referenzseite, die den Fehler oder die Funktion, die den Fehler verursacht hat, beschreibt. Diese Verweise beziehen sich auf die Einstellungen von docref_root und docref_ext.

error_prepend_string string

Der Inhalt, der vor der Fehlermeldung ausgegeben wird.

error_append_string string

Der nach der Fehlermeldung ausgegebene Inhalt.

error_log

Legt die Datei fest, in der Skriptfehler protokolliert werden. Die Datei muss für den Webserverbenutzer beschreibbar sein. Wenn der Sonderwert syslog gesetzt ist, werden Fehlermeldungen an den Systemlogger gesendet. Auf Unix und ähnlichen Systemen wird syslog(3) verwendet und auf Windows NT-ähnlichen Systemen wird das Ereignisprotokoll verwendet. Die Systemprotokollierung wird unter Windows 95 nicht unterstützt. Siehe: syslog(). Wenn diese Konfiguration nicht festgelegt ist, werden Fehlermeldungen an den SAPI-Fehlerlogger gesendet. Erscheint beispielsweise im Fehlerprotokoll von Apache oder wird in der CLI an stderr gesendet.

Fehlerbehandlung im Zusammenhang mit Methoden und Verwendung, persönliches Verständnis

debug_backtrace – Generieren Sie einen Backtrace (Backtrace). Sie können Parameter festlegen, um die Anzahl der zurückgegebenen Stapel zu begrenzen.

kann die Stapelinformationen des Funktionsaufrufs ermitteln, was für die Fehlerbehebung sehr hilfreich ist , und das Debug von tp ähnelt

debug_print_backtrace(); druckt den Traceback direkt, ähnlich wie debug_backtrace,

error_clear_last – löscht den letzten Fehler

error_get_last – Rufen Sie den zuletzt aufgetretenen Fehler ab.

error_log – Senden Sie die Fehlermeldung an einen Ort. Sie können den Fehler in einer Datei speichern , aber die Fehlermeldung darf nicht null sein

error_reporting – Legen Sie fest, welche Art von PHP-Fehlern gemeldet werden sollen, genau wie php.ini

restore_error_handler – Wiederherstellen die vorherige Fehlerbehandlungsfunktion,

restore_Exception_handler – Stellen Sie die zuvor definierte Ausnahmebehandlungsfunktion wieder her.

set_error_handler – Benutzerdefinierte Fehlerbehandlungsfunktion festlegen, die vor dem Fehler definiert werden muss

Fehler der folgenden Ebenen können nicht definiert werden von der Benutzerfunktion zur Verarbeitung von: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING und den meisten E_STRICTs, die in der Datei generiert werden, in der die Funktion set_error_handler() aufgerufen wird.

So wie die INI-Einstellung von error_reporting die Anzeige von Fehlern steuern kann, kann der zweite Parameter verwendet werden, um das Auslösen von error_handler zu blockieren. Ohne diese Maske wird error_handler bei jedem Fehler aufgerufen, unabhängig davon, wie error_reporting eingestellt ist.

set_Exception_handler – Benutzerdefinierte Ausnahmebehandlungsfunktion festlegen

trigger_error – Eine Fehler-/Warnungs-/Hinweismeldung auf Benutzerebene generieren

user_error – Alias ​​für trigger_error

register_shutdown_function ist eine Registrierungsfunktion, die nach dem PHP-Beendigungsskript ausgeführt wird. Der erste Parameter unterstützt die Funktion und ein Array mit Anweisungen zum Instanziieren der Klasse und Klassenmethoden (die Klasse wird bei der Registrierung zuerst instanziiert). Registrierung ist erfolgreich, jeder Fehler kann erfasst werden)


Php Automatisches Laden

Persönliche Meinung

Der Hauptunterschied zwischen spl_autoload_register und __autoload ist

__autoload Es ist nur so, dass eine Funktion nur einmal in PHP definiert werden kann. Wenn Sie Plug-Ins usw. laden möchten, müssen Sie ständig Urteile oder Composer fällen, was sehr mühsam sein wird

spl_autoload_register kann auf dem Ordner oder Plug-in basieren, verschiedene Verarbeitungsfunktionen anpassen, eine automatisch geladene Warteschlange erstellen und die Suche entsprechend der Warteschlange fortsetzen, bis die Warteschlange abgeschlossen ist oder true zurückgibt; die Standardeinstellung gibt true zurück, wenn eine Datei gefunden wird)

Stapelspeicher(Persönliches Verständnis)

Heap:

Stapel: Einige grundlegende Typvariablen, die in der Funktion definiert sind und Objektreferenzvariablen befinden sich alle im Stapelbereich und werden automatisch freigegeben

Informationsergänzung:

Heap:

Wenn die in der Datei definierten Variablen statisch geändert werden, werden sie in den globalen Datenbereich geändert und nicht belegt Der Stapelspeicher

Stack:

Der Stapelspeicher speichert im Allgemeinen Funktionsaufrufinformationen und Variablen Da Funktionsaufrufe rekursiv sind, muss die äußere Funktion vor der inneren Funktion aufgerufen und ausgeführt werden, und sie muss warten, bis die aufgerufene innere Funktion abgeschlossen ist. Der Last-Out-Mechanismus wird daher als Stapelspeicher bezeichnet.

PS: Beim Kompilieren sammelt der Compiler zunächst alle in dieser Funktion definierten Variablen und stellt sie an den Anfang der Funktion, um sie für den Speicher zu verwenden, also in der Reihenfolge, in der sie sich befinden Das Auf- und Ablegen auf dem Stapel ist nicht das, was Sie schreiben. Die Reihenfolge des Programms ist definiert, aber der Stapel wird nach vorne verschoben, wenn die Funktion ausgeführt wird, und vom Stapel entfernt, nachdem die Funktionsausführung abgeschlossen ist.

Andere:

Konst., globale und statische Änderungen werden alle in global gespeichert Datenbereich

Superglobale Variablen und globale Variablen sind alle statische Variablen und werden im globalen Datenbereich

gespeichert. Es gibt weniger Informationen und wartet auf Korrektur und Verbesserung 🎜>

PHPRun-Modus:

1) CGI (Common Gateway Interface/Common Gateway Interface)

sind im Allgemeinen ausführbare Programme wie EXE-Dateien und WEB-Server, die jeweils unterschiedliche Prozesse belegen, und im Allgemeinen kann ein CGI-Programm nur einen Benutzer verarbeiten Anfrage. Wenn die Anzahl der Benutzeranforderungen sehr groß ist, werden auf diese Weise viele Systemressourcen wie Speicher, CPU-Zeit usw. beansprucht, was zu einer geringen Leistung führt. 2.FastCGI (Resident CGI / Long-Live CGI)

FastCGI ist Eine aktualisierte Version von CGI ist wie ein langlebiges CGI. Es kann jederzeit ausgeführt werden, solange es nicht jedes Mal aktiviert wird (dies ist das am meisten kritisierte Merkmal von CGI). Fork-and-Execute-Modus).

FastCGI ist eine skalierbare Hochgeschwindigkeitsschnittstelle für die Kommunikation zwischen HTTP-Servern und dynamischen Skriptsprachen. Die meisten gängigen HTTP-Server unterstützen FastCGI, darunter Apache, Nginx und lighttpd. Gleichzeitig wird FastCGI auch von vielen Skriptsprachen unterstützt, darunter PHP.
  1. Die FastCGI-Schnittstelle übernimmt eine C/S-Struktur, die den HTTP-Server und den Skript-Parsing-Server trennen und einen oder mehrere Skript-Parsing-Daemons auf dem Skript-Parsing-Server starten kann. Jedes Mal, wenn der HTTP-Server auf ein dynamisches Programm trifft, kann es zur Ausführung direkt an den FastCGI-Prozess übermittelt und das Ergebnis dann an den Browser zurückgegeben werden. Mit dieser Methode kann der HTTP-Server ausschließlich statische Anforderungen verarbeiten oder die Ergebnisse des dynamischen Skriptservers an den Client zurückgeben, was die Leistung des gesamten Anwendungssystems erheblich verbessert.

Php-fpm ist der FastCGI-Manager, der mit PHP geliefert wird

3) CLI (Command Line Run/Command Line Interface)

  1. 4. Webmodulmodus (der Modus, in dem Webserver wie z Apache run)

Dieser Modus ist eine Erweiterung von Apache basierend auf CGI

  1. 5. ISAPI (Internet Server Application Program Interface) ist eine Reihe von API-Schnittstellen für WEB-Dienste, die von Microsoft bereitgestellt werden und die was implementieren können CGI bietet auf dieser Basis alle Funktionen erweitert, wie beispielsweise die Bereitstellung einer Filteranwendungsschnittstelle. ISAPI-Anwendungen werden meist in Form dynamischer DLL-Bibliotheken verwendet, die nach Anforderung durch den Benutzer ausgeführt werden können. Sie verschwinden nicht sofort nach der Verarbeitung einer Benutzeranforderung, sondern verbleiben weiterhin im Speicher und warten auf andere Benutzereingaben verarbeitet werden. Darüber hinaus befinden sich die ISAPI-DLL-Anwendung und der WEB-Server im selben Prozess, und die Effizienz ist deutlich höher als bei CGI.

Php2Arten und WebServer-Interaktion:

Nginx:

Der Benutzer initiiert eine Anfrage und verwendet den aktuellen Handshake von Nginx. Wenn Nginx diese erhält, sendet er sie zur Verarbeitung an PHP-FPM. Wenn PHP-FPM ausgelastet ist, gibt Nginx 504 getway zurück 🎜>Apache:

Apache verfügt über 3 Betriebsmodi: Prefork, Worker, Event,

Erstellen Sie je nach Modus unterschiedliche Prozesse Wenn Prozesse und Threads relevantes PHP erhalten, werden sie zur Verarbeitung an das Apache-Modul übergeben

Das obige ist der detaillierte Inhalt vonEine kurze Analyse der PHP-Fehlerbehandlung, des automatischen Ladens, des Stapelspeichers und des Betriebsmodus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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