Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie etwas Wissen und Erfahrung über PHP

Teilen Sie etwas Wissen und Erfahrung über PHP

零到壹度
零到壹度Original
2018-04-14 17:45:071279Durchsuche

Der Inhalt dieses Artikels besteht darin, etwas Wissen und Erfahrung über PHP-Interviews zu teilen. Er hat einen gewissen Referenzwert.

  • CORS (Cross Origin Resource Sharing) domänenübergreifende Ressourcenfreigabe, die standortübergreifende Ressourcenanfragen ermöglicht. Der Client muss eine bestimmte Methode zum Anfordern von Ressourcen verwenden (z. B. xmlhttprequest) und bestimmte Header-Informationen bereitstellen. Der Server muss auch domänenübergreifende Ressourcenanforderungen unterstützen.

Memcache- und Redis-Ähnlichkeiten und Unterschiede

  • Memcache kann Multithreading nutzen, hoher Durchsatz, geeignet für große Besuche

  • Memcache unterstützt nur einfache Schlüssel/Wert-Strukturen

  • Memcache kann keine Daten speichern und kann nicht zum Zwischenspeichern verwendet werden.

  • Weil Memcache unterstützt mehrere Thread-Operationen, daher muss das Problem der Datenkonsistenz berücksichtigt werden, und es wird optimistisches Sperren von cas (Prüfen und Festlegen) verwendet

  • Da Redis einfach geformt ist, kann es dies sicherstellen Ordnungsmäßigkeit der Operationen

  • Redis unterstützt eine Vielzahl von Datenstrukturen, Schlüssel/Wert, Liste, Menge, Zset, Diktat usw.

  • Redis Daten können dauerhaft gespeichert werden. Speichern Sie die Daten auf der Festplatte und können sie bei einem Neustart auslesen

  • Redis unterstützt Datensicherung, also Datensicherung im Master-Slave-Modus

Lösung mit hoher Parallelität für Webprojekte

  • Statisches HTML, statische Verwendung häufig verwendeter, aber selten aktualisierter Daten

  • Zu vermeidende Trennung des Bildservers. Wirkt sich auf den Anwendungsserver aus und kann individuelle Konfigurationsoptimierungen, Cache-Einstellungen usw. für den Bildserver durchführen

  • Datenbankcluster, Bibliothekstabellen-Hashing

    • Datenbankcluster können die Trennung von Lesen und Schreiben realisieren und die Reaktionsgeschwindigkeit der Datenbank verbessern. Es handelt sich normalerweise um einen Master und mehrere Slaves oder x-Master und y-Slave. Wenn beispielsweise weniger geschrieben und mehr gelesen wird, ist ein Server für Schreibvorgänge reserviert und andere Server werden für Lesevorgänge verwendet. Dadurch können die Auswirkungen von Lese-/Schreibsperren vermieden werden. Nach Abschluss des Schreibvorgangs müssen die Daten jedoch synchronisiert werden.

    • Ein weiterer Vorteil eines Datenbankclusters besteht darin, dass beim Ausfall eines Datenbankservers immer noch vollständige Daten auf anderen Servern vorhanden sind.

    • In einem In der verteilten Datenbank gibt es mehrere Knoten im System, und jeder Knoten führt unterschiedliche Funktionen aus. Wenn ein Knoten ausfällt, kann die entsprechende Funktion nicht ausgeführt werden.

    • Der Unterschied zwischen Datenbankcluster und verteilter Datenbank. Angenommen, die Ausführung einer Aufgabe auf einem Knoten dauert eine Stunde, und es gibt jetzt 10 solcher Aufgaben und 10 Knoten. Die verteilte Datenbank kann die Aufgabe in 10 Aufgaben aufteilen. Jeder Knoten erledigt eine andere Aufgabe, unabhängig von den Abhängigkeiten der Unteraufgaben. Alle Aufgaben werden nach einer Stunde abgeschlossen. Jeder Knoten im Datenbankcluster kann eine vollständige Aufgabe erledigen. Es können durchschnittlich 10 Aufgaben pro Knoten ausgeführt werden, sodass alle Aufgaben nach einer Stunde abgeschlossen sind.

    • SQL-Optimierung

    • Wenn die Tabelle zu viele Daten enthält, können Sie erwägen, die Tabelle aufzuteilen und Hash-Mapping zu verwenden

    • Indexoptimierung

  • Cache

  • Spiegel, wird zur Verbesserung der Zugriffsgeschwindigkeit verwendet

  • Lastausgleich, Lösung hoher Parallelität und massiver Zugriffsprobleme

  • CDN, sodass Benutzer auf den nächstgelegenen CDN-Server zugreifen und die schnellste Antwort erhalten können

  • Datenkomprimierung

PHP

Magische Methode

  • __set/__get behandelt Attribute, die nicht vorhanden sind in der Klasse

  • __call/_callStatic wird ausgelöst, wenn eine Methode/statische Methode aufgerufen wird, die in der Klasse nicht vorhanden ist. __callStatic selbst muss auch als statische Methode

  • __toString deklariert werden, um das Objekt in einen String umzuwandeln und auszugeben

  • __invoke, um das Objekt auszuführen als Funktion

Der Unterschied zwischen require und include

  • include-Funktion: liest die angegebene Datei und führt das darin enthaltene Programm aus;

  • require-Funktion: liest den Inhalt der Zieldatei und ersetzt sich selbst durch den gelesenen Inhalt

  • include_once-Funktion: schließt die angegebene Datei ein und führt sie aus. Dieses Verhalten ähnelt der include-Anweisung. Der einzige Unterschied besteht darin, dass die Datei, wenn sie bereits eingebunden wurde, nicht noch einmal eingebunden wird. Wie der Name dieser Anweisung schon sagt, wird sie nur einmal eingefügt;

  • require_once-Funktion: Genau das Gleiche wie die require-Anweisung, der einzige Unterschied besteht darin, dass PHP prüft, ob die Datei vorhanden ist wurden bereits aufgenommen und werden in diesem Fall nicht noch einmal aufgenommen.

  • Die Verwendung von include_once oder require_once verringert die Effizienz des Programms, da vor dem Laden der Datei zunächst in der geladenen Dateitabelle gesucht wird, ob die Datei geladen wurde

  • Das Einfügen einer nicht vorhandenen Datei erzeugt nur einen Alarm, wenn eine nicht vorhandene Datei erforderlich ist, wird direkt ein schwerwiegender Fehler ausgegeben und das Skript wird gestoppt

  • include ist eine bedingte Einschlussfunktion, require ist eine Funktion, die bedingungslos enthält. Das heißt, wenn in der äußeren Ebene von include oder require eine if-Bedingung vorhanden ist und if falsch ist, schließt include die Datei nur dann ein, wenn sie wahr ist, und require schließt die Datei unabhängig davon ein, ob sie wahr ist es ist wahr oder falsch

Warum können Sie bei der Rückgabe keine Klammern verwenden? Reduzieren Sie die Effizienz

  • Wenn der Rückgabewert keine Parameter bereitstellt, wird zu diesem Zeitpunkt null zurückgegeben. und Klammern dürfen zu diesem Zeitpunkt nicht enthalten sein. Wenn Klammern verwendet werden, führt dies zu einem Parsing-Fehler

  • Bei der Rückgabe einer Referenz auf eine Variable dürfen keine Klammern verwendet werden. Andernfalls wird der Wert der zurückgegebenen Referenz anstelle der Referenz selbst verwendet

    Unterschiede zwischen PHP5 und PHP7

Das obige ist der detaillierte Inhalt vonTeilen Sie etwas Wissen und Erfahrung über PHP. 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