Heim  >  Artikel  >  Backend-Entwicklung  >  Ist es für PHP schneller, die Datenbank durch Template-Traversal zu lesen oder HTML aus einer Datei zu lesen?

Ist es für PHP schneller, die Datenbank durch Template-Traversal zu lesen oder HTML aus einer Datei zu lesen?

WBOY
WBOYOriginal
2016-09-28 08:54:091222Durchsuche

Ich habe zuvor an einer Website für ein Einkaufszentrum gearbeitet und es gab ein Modul zum Anpassen der Homepage. Ich habe schnell den HTML-Inhalt der Seite extrahiert und ihn mit PHP in eine Datei geschrieben auslesen und in die Vorlage ausgeben. Das Lesen der Datenbank in der Frage bezieht sich auf das Lesen benutzerdefinierter Daten, nicht auf HTML-Inhalte.

Ich habe es jetzt nicht eilig, ich möchte es wissen:

  1. Ist das Lesen der Datei schneller, wenn mehrere Personen gleichzeitig darauf zugreifen? Oder ist es schneller, Daten aus der Datenbank zu lesen?

  2. Wenn viel Inhalt in die Datei geschrieben wird und die Datei relativ groß ist, wird die Lesezeit dann langsam sein?

  3. Wäre es für das von mir verwendete TP-Framework besser, direkt in die Vorlage einzubauen?

  4. Fragen Sie mich noch einmal, wie testen Sie Parallelität? Nach welchen Schlüsselwörtern sollten Sie suchen?

PS: Ich bin neu in der Arbeit, bitte geben Sie mir einen Rat

Antwortinhalt:

Ich habe zuvor an einer Website für ein Einkaufszentrum gearbeitet und es gab ein Modul zum Anpassen der Homepage. Ich habe schnell den HTML-Inhalt der Seite extrahiert und ihn mit PHP in eine Datei geschrieben auslesen und in die Vorlage ausgeben. Das Lesen der Datenbank in der Frage bezieht sich auf das Lesen benutzerdefinierter Daten, nicht auf HTML-Inhalte.

Ich habe es jetzt nicht eilig, ich möchte es wissen:

  1. Ist das Lesen der Datei schneller, wenn mehrere Personen gleichzeitig darauf zugreifen? Oder ist es schneller, Daten aus der Datenbank zu lesen?

  2. Wenn viel Inhalt in die Datei geschrieben wird und die Datei relativ groß ist, wird die Lesezeit dann langsam sein?

  3. Wäre es für das von mir verwendete TP-Framework besser, direkt in die Vorlage einzubauen?

  4. Fragen Sie mich noch einmal, wie testen Sie Parallelität? Nach welchen Schlüsselwörtern sollten Sie suchen?

PS: Ich bin neu in der Arbeit, bitte geben Sie mir einen Rat

  1. Die Daten in der Datenbank werden auch in Dateien gespeichert. Unabhängig vom Speichercache der Datenbank ist das einfache Lesen von Dateien natürlich schneller als das Lesen der Datenbank, da die Datenbank auch den Abfrageprozess durchlaufen muss andere Verarbeitungsvorgänge. Wenn jedoch zu viele Dateien vorhanden sind, müssen Sie auch die Abfragegeschwindigkeit des Dateisystems berücksichtigen, die langsamer ist als die Datenbankabfrage, wenn zu viele Dateien vorhanden sind.

  2. Die Zeit zum Lesen der Datei hängt natürlich von der Größe der Datei ab, aber wenn der gesamte Inhalt der Datei Ihren Wünschen entspricht, ist diese Zeit natürlich unverzichtbar. Wenn Sie nur einen Teil der Datei lesen möchten, können Sie den Dateizeiger durch Suchen verschieben.

  3. Die Vorlagen des TP-Frameworks werden kompiliert, das heißt, die von Ihnen geschriebene Vorlagendatei wird während der tatsächlichen Ausführung nicht verwendet, sondern die kompilierte Vorlage, sodass Sie include ohne Bedenken verwenden können über Leistungsprobleme.

  4. Um genau zu sein, sollten Parallelitätstests Stresstests genannt werden. Suchen Sie einfach nach dem Stresstestplan.

Als Antwort auf Ihre Frage:

  1. Bei hoher Parallelität ist die direkte Datenbank definitiv sehr langsam. Zumindest gibt es eine Cache-Ebene in der Datenbank:

    <code>文件 < 内存(memcache、redis) < Cache阵列
    文件也属于Cache的一种</code>

    Wenn man sich Ihre Anforderungen ansieht, scheint es, dass es Schritte zum Generieren statischer Dateien gibt. Hier sind ein paar Schlüsselwörter für Sie:

    • ob_start

    • 伪静态

    • CDN

  2. Wenn viel Dateiinhalt geschrieben werden muss, können wir nichts dagegen tun. Normalerweise verwenden wir Cache usw., um die Gesamtarchitekturlösung zu erstellen, anstatt einfach zu schreiben

    Wenn die gelesene Datei (insbesondere die PHP-Datei) relativ groß ist, sollten Sie OpCache aktivieren, um die Geschwindigkeit zu erhöhen

  3. Sie fügen eine Vorlagendatei ein, die von PHP include ausgeführt wird, und die Effizienz entspricht der von PHP include.
    Wenn es sich bei den von Ihnen besuchten Seiten ausschließlich um statische Dateien handelt und Untervorlagen eingebettet werden müssen, ist SSI (Apache, nginX) viel schneller als PHPs include

    Also, die Antwort auf Ihre Frage: HTML ist am schnellsten, es ist nicht nötig, PHP auszuführen, aber es muss im Voraus generiert werden

  4. Parallelitätstests: Beginnen Sie mit dem Schlüsselwort apache benchmark, dann werden Sie viele Inhalte finden, die Sie benötigen.

Erstens gibt es keinen großen Geschwindigkeitsunterschied zwischen ihnen, aber es ist einfacher, sie zu verwalten, wenn sie alle in der Datenbank abgelegt werden.

Zweitens spielt es keine Rolle, wer schneller ist. Diese CMS-Typ-Websites können durch Statik optimiert werden. Nach der Statik hat dies nichts mit der Seitengenerierungszeit zu tun.

Erstens Speicher>> Dateien
Zweitens speichert die Datenbank auch Daten in Dateien (natürlich verfügt die Datenbank über einen Abfragecache)
Für nicht relationale Daten ist es natürlich schneller Dateien speichern
Eine große Anzahl von Dateien kann jedoch nicht im selben Ordner gespeichert werden (die Adressierung ist langsam). Sie können das Dateinamenverzeichnis verwenden, um sie zu trennen, z. B.:
Dateiname dsaferdfsasxfsfsdf.dat
Nehmen Sie die ersten beiden Zeichen, um ein Verzeichnis der ersten Ebene zu erstellen und es als
ds /dsaferdfsasxfsfsdf.dat
lokljljoiomlkml.dat >> lo/lokljljoiomlkml.dat zu speichern

TP verfügt über eine einfache Cache-Methode S(), die standardmäßig einen Dateitreiber verwendet. Wenn der Cache-Treiber Memcahced oder Redis verwendet, sollte er schneller sein als die Datei lokaler Computer oder über Gigabit im LAN

Für gleichzeitige Tests können Linux- und Darwin-Kernelsysteme (OS "
// 1000 Anfragen initiieren, jedes Mal 100 gleichzeitig (es gibt eine Obergrenze für diesen Wert, abhängig von den Systemeinstellungen, der allgemeine Standardwert ist 256)

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