Ist PHPer an der Basis?
Seit der Geburt von PHP hat PHP begonnen, die Mehrheit der Programmierer in Webanwendungen zu unterstützen. Gleichzeitig hat PHP als auf die Webentwicklung zugeschnittene Skriptsprache stets an der Idee der Einfachheit und Open Source festgehalten, was auch eine schnelle Entwicklung von PHP ermöglicht und die Entstehung und Entwicklung von Web 2.0 kräftig gefördert hat. Allerdings galten PHPer (PHP-Programmierer) lange Zeit als Programmierer auf Basisniveau, Programmierer mit wenig technischem Inhalt und niedrigem Niveau. Dies gilt insbesondere auf dem Land.
Ich erinnere mich, dass ein technischer Direktor so etwas gesagt hat. Er beauftragte einen Programmierer mit der Entwicklung von PHP. Der Programmierer sagte tatsächlich: „Ich bin ein Java-Student. Wenn Sie mich bitten, PHP zu schreiben, machen Sie mich dann nicht herab?“ Dieser Vorfall hinterließ bei mir einen tiefen Eindruck und berührte mich sehr. Obwohl dies nicht die Ansichten der meisten Programmierer widerspiegelt, dürfte es viele Leute geben, die dieser Meinung sind. Andere sagen, wenn es sich jetzt um ein großes Regierungsprojekt handelt, wird PHP definitiv nicht in die Überlegungen einbezogen.
Warum wird PHPer als Basisniveau betrachtet, weil es sehr einfach ist und jeder es lernen kann, also nicht schwierig ist? Das dachte ich früher auch. Der Einstieg in PHP ist schnell und es ist sehr praktisch für die Verarbeitung von Dateien, Daten, Remoteverbindungen und Netzwerkprogrammierung. Beamte sagen auch, dass die Kosten für das Erlernen von PHP sehr niedrig sind, sodass Sie es einfach verwenden können. Diese Idee ist auch weit verbreitet, sogar die meisten PHPer selbst denken so.
Nachdem ich das gesagt habe, denke ich, dass jeder darüber nachdenken wird, warum ich diese Worte schreibe. Denn mehr als ein Jahr PHP-Förderarbeit hat es mir ermöglicht, die allgemeine Situation vieler Unternehmen zu verstehen, die PHP verwenden. In diesen Prozessen erkannte ich langsam die Grundursache. Was ich hier sage, ist im Wesentlichen meine persönliche Meinung, aber ich denke, das ist eine Tatsache.
Warum wird PHPer als Basisebene betrachtet? Der Hauptgrund dafür ist, dass die meisten Dinge, die PHPer tut (implementiert durch Code), Dinge auf der Präsentationsebene sind. Jeder, der mit PHP vertraut ist, weiß das. Natürlich wird es auch PHP geben, die über die Funktionen eines bestimmten Frameworks sprechen, das in der MVC-Struktur geschrieben ist. Aber das sind immer noch Präsentationsebenen. Daher gelten Programmierer, die sich nur mit der Präsentationsschicht befassen, als Basisprogrammierer. Das stimmt tatsächlich, denn in diesem Fall ist es für PHP wirklich schwierig, umfangreiche Anwendungen zu erstellen.
Das ist der Grund, nein. Warum ist PHPer immer für die Präsentationsschicht verantwortlich? Die Antwort ist, dass wir die zugrunde liegende Datenverarbeitung (Webanwendungen sind Datenspeicherung und Suche) im Allgemeinen nicht berühren. Okay, an diesem Punkt haben sich vielleicht einige Leute gedacht: Ist das nicht eine Datenbank? Ja, es ist die Datenbank. Der Hauptverursacher, der PHPer auf der Basisebene hält, ist die Datenbank. Warum?
PHPer verlässt sich zu sehr auf MySQL
Denn in der derzeit beliebten Webarchitektur ist das Frontend ein Lastausgleichssystem, die Mitte der Webserver und die Rückseite der Datenbankserver. Daher arbeiten die meisten PHPer auf Webserverebene. Denn die Datenbank hat die Daten für uns sehr gut organisiert. Daher gibt es in PHP nicht viele Algorithmen, und jeder hat unbewusst das Gefühl, dass sie nicht benötigt werden, ganz zu schweigen davon, dass dies Auswirkungen auf die Leistung hat.
In diesem Fall wird PHPer zum Datenbankbenutzer und betreibt die Datenbank ständig. Anstatt ein Programm zu machen. Eines der einfachsten PHP-Skripte besteht darin, eine Verbindung zur Datenbank herzustellen, die Daten zu entnehmen und sie dann mithilfe von Befehlen an den Browser auszugeben. Der gesamte Vorgang erfordert nicht mehr als 10 Codezeilen. Es fühlt sich an, als wäre es zu einfach. Es gibt keinen technischen Inhalt. Warum, weil der Datenverarbeitungsteil von der Datenbank abgeschlossen wurde? Insbesondere die Verwendung von MySQL. MySQL ist kostenlos, sodass die meisten Programmierer es frei verwenden können. Darüber hinaus ist MySQL schnell genug, sodass es sehr einfach ist, eine PHP-Anwendung zu erstellen. Das ist so, als würde man einem eine Waffe geben, und man hat das Gefühl, dass es nicht nötig ist, Kampfkunst zu erlernen. Natürlich sage ich nicht, dass Waffen nicht so gut sind wie Kampfsportarten. Vielmehr können Kinder mit dem Aufkommen von Waffen Menschen einfach und bequem töten.
Lassen Sie uns ausführlich darüber sprechen, warum es sich um eine Datenbank handelt. Hier gebe ich ein Beispiel. Ich besuchte eine sehr berühmte Website in Peking. Zu dieser Zeit sprach ein relativ erfahrener PHP-Programmierer über Systemarchitektur. Ich erinnere mich, dass, als der Programmierer jedem eine Algorithmusfrage in einer Datenstruktur stellte, niemand im Publikum darauf antworten konnte (ich eingeschlossen). Dann begann der Programmierer, allen einige sehr grundlegende Datenstrukturen zu erklären. Lassen Sie mich an den Datenstrukturkurs zurückdenken, den ich am College gelernt habe. Diese grundlegenden Datensortierungs-, Such- und Übertragungsprobleme treten in anderen Hochsprachen (z. B. C) sehr häufig auf. Aber nicht in PHP. Im PHPchina.com-Forum gibt es auch einen Abschnitt namens PHP-Datenstrukturen und -Algorithmen. Auch in dieser Rubrik gibt es nur sehr wenige Beiträge.
Apropos, verstehst du? Die meisten PHPer befassen sich nur mit Dingen in der Präsentationsschicht, und mit der bequemen Verwendung von MySQL können PHPer die meisten Entwicklungsaufgaben erledigen, ohne Datenstrukturen und Algorithmen zu berühren, sodass nur eine Person über die oben genannten Aufgaben verfügt und kein PHP-Programmierer das Problem beantworten kann Wenn eine Datenstruktur entsteht und auf eine Sprache wie C umgestellt wird, kann die Situation ganz anders aussehen. Es ist die Basis von PHPer, die PHP wie eine Basis aussehen lässt.
Wenn man genau darüber nachdenkt, gibt es zwei Themen, die im Internet am meisten diskutiert werden. Zum einen geht es um die Verwendung von PHP-Klassen (Kapselung von Verarbeitungsprozeduren) und zum anderen um die Frage des Entwicklungsframeworks. Wenn wir es jedoch sorgfältig analysieren, stellen wir fest, dass es in diesen sogenannten relativ komplexen Konzepten in PHP keine Datenverarbeitung gibt. Es gibt eine Datenbank. Dies kann mit einem Adodb- oder PHP5-PDO erfolgen. Ist es wirklich fertig? Nein, diese stellen lediglich eine Verbindung zur Datenbank her und es findet keine Datenverarbeitung statt. PHPer scheint also nichts zu bieten zu haben.
Lassen Sie uns über ein bestimmtes Codeproblem sprechen, die stufenlose Klassifizierung. Ich denke, jeder kennt dieses Konzept. Ich habe es auf zwei Arten gesehen. Die erste ist die authentische PHPer-Verarbeitungsmethode, die derzeit ebenfalls relativ beliebt ist. Verwenden Sie einfach die Datenbank, um damit umzugehen. Und es gibt nur sehr wenige Felder. Sie müssen nur ein Feld der übergeordneten Klasse hinzufügen und beurteilen. Und diese Methode ist sehr praktisch. Auch die Effizienz ist hoch. Dies ist jedoch nicht der Umfang der Datenverarbeitung, sondern der Datenbanksuche.
Der zweite wurde von einem C-Programmierer mit PHP geschrieben. Er entnahm alle Klassifizierungsinformationen aus der Datenbank, ordnete und verteilte sie dann mithilfe des Datenstrukturalgorithmus und gab sie dann aus.
Wir werden die Effizienz dieser beiden Methoden hier nicht vergleichen. Ich denke, jeder hat seine eigenen Vorstellungen. Aber ich möchte ein Problem klären, nämlich den wesentlichen Unterschied zwischen diesen beiden Ansätzen. PHPer verwendet üblicherweise Datenbanken zur Verarbeitung, verfügt über eine sehr clevere Verarbeitungsmethode und ist sehr effizient. Bei dieser Methode handelt es sich um eine Datenbankabfrage. Die zweite Methode ist markanter. Er glaubt, dass die Datenbank ein Ort ist, an dem Daten gespeichert werden, und dass die spezifische logische Verarbeitung von Ihrer eigenen Logik abhängt.
Daher ist die Schlussfolgerung, dass sich der Benutzer der zweiten Methode stärker fühlt, weil die Logik der Daten von ihm organisiert wird. Und ich denke, dass der Ansatz von PHPer nichts anderes ist, als die Datenbank abzufragen. Daher denkt er, dass PHPer ein Basisprofi sind und nur wissen, wie man Datenbanken betreibt und Seiten arrangiert (eine kluge Art).
Lassen Sie die Datenbank zu ihrer ursprünglichen Aufgabe zurückkehren
Zu diesem Zeitpunkt hat sich meiner Meinung nach jeder an viele seiner üblichen Entwicklungserfahrungen mit PHP erinnert. Haben Sie festgestellt, dass tatsächlich jeder die Datenbank bedient? .
Dann lassen Sie uns dieses Problem besprechen. Ist die Datenbank fehlerhaft? Warum habe ich kein Problem damit, die Datenbank zur Datenverarbeitung zu verwenden? Was ich damit sagen will ist, dass etwas mit der Datenbank nicht stimmt und dass es sehr problematisch ist. Natürlich sage ich hier nicht, dass Sie die Datenbank nicht verwenden können, und ich schmälere auch nicht die Leistung der Datenbank. Vielmehr sind wir uns der Rolle der Datenbank nicht vollständig bewusst.
Meine Idee entstand aus so etwas. Einmal fragte mich der technische Leiter einer Website, warum ihre Website so langsam sei und was getan werden sollte. Zu diesem Zeitpunkt war der Ingenieur in der Zend-Zentrale in meinem MSN zufällig online, also fragte ich ihn, was ich tun soll, wenn PHP langsam reagiert? Er teilte mir damals direkt mit, dass es sich um ein Datenbankproblem handele. Es muss sein, dass die Datenbank nicht optimiert und gut gestaltet ist. Daher habe ich dem technischen Leiter keine eindeutige Antwort gegeben, da wir uns nicht auf das Datenbankdesign einlassen konnten. Deshalb habe ich einige allgemeine Vorschläge zur Datenbankoptimierung gegeben. Dies geschah wiederholt und ich begann mich zu fragen, warum mir die Ingenieure in der Zend-Zentrale jedes Mal sagten, dass es sich um ein Datenbankproblem handele. Können wir dieses Problem nicht auf PHP-Ebene lösen? Die Antwort ist nein. Da PHP derzeit sehr schnell läuft, können Sie anhand der Leistungsanalyse von Zend auch sehen, dass die Laufzeit von PHP weniger als 10 % beträgt. Was macht PHP also? Es wartet. Warten auf Ergebnisse der Datenbankabfrage. Dieser Aspekt wurde in aktuellen PHP-Produkten erheblich verbessert, nämlich Caching und Webseiten-Statisierung.
Caching mag für jeden unbekannt sein, aber die Statik von Webseiten ist mittlerweile selbst für Benutzer von PHP-Produkten sehr klar. Es ist schnell, einfach zu durchsuchen usw. Die Vorteile liegen auf der Hand. Scherzhaft gesagt: Um statische Webseiten auf der Homepage einer Website zu erreichen, muss die Festplatte nur groß genug sein. J Was Caching betrifft, ist es komplizierter und bereitet den meisten PHPern auch Kopfschmerzen. Manche Leute verwenden sogar C, um es zu implementieren. Da die Überprüfung, Suche, Extraktion, Aktualisierung usw. des Datengültigkeitszeitraums im Caching schwieriger zu handhaben sind. Natürlich verwenden einige Leute Datenbanken, um Caching-Probleme zu lösen.
Wenn die Anzahl der Besuche steigt, werden daher viele Probleme, die bei PHP-strukturierten Websites auftreten, durch die Datenbank verursacht. Das Problem der Datenbanksynchronisierung ist keine große Sache. Der Schlüssel liegt darin, dass die Antwortgeschwindigkeit der Datenbank exponentiell abnimmt. Diese Frage habe ich dem Vizepräsidenten von MySQL während der LAMP-Konferenz am 23. Oktober gestellt. Er hat mir damals keine perfekte Antwort gegeben (was ich erwartet hatte), denn es wird immer Engpässe in der Datenbank geben, es sei denn, es handelt sich um eine Märchendatenbank, haha! Die LAMP-Konferenz Als ich mich mit einem technischen Leiter bei Yahoo unterhielt, fragte ich ihn, was Yahoo bei der Wahl von MySQL oder Oracle berücksichtigt habe. Seine Antwort überraschte mich. Er sagte, dass wir die meiste Zeit MySQL verwenden werden, weil seine Leistung unseren Anforderungen entsprach. Aber wann werden wir uns für Oracle entscheiden? Dann müssen wir die Daten der Ladebenutzer speichern. Ich fragte: Warum ist Oracle stabiler als MySQL? Er sagte, er habe darauf keine besondere Rücksicht genommen. Der Schlüssel liegt darin, dass wir, wenn wir Oracle verwenden, die verantwortliche Person finden können, wenn ein Problem auftritt, und Oracle für die Bearbeitung des Vorfalls verantwortlich ist. Aber wenn wir MySQL verwenden, an wen wenden wir uns dann? , unsere Sicht auf die Datenbank sollte sein Um es zu korrigieren, bedeutet dies, dass die Datenbank nicht allmächtig ist. Wenn Sie dazu in der Lage sind, entwickeln Sie Ihre eigene Datenbank. Ich habe gehört, dass Google so ist.
Was halten wir also von der Datenbank? Mein persönliches Verständnis ist, dass die Datenbank nur ein Mittel zur Reduzierung der Entwicklungskosten ist. Denn nach der Nutzung der Datenbank müssen wir uns nicht mehr um die Datenspeicherung, insbesondere das Sortieren und Suchen, kümmern. Doch welche Probleme entstehen dadurch? Wenn das Unternehmen expandiert, wird die Datenbank zum Engpass. Das Problem wird zu diesem Zeitpunkt sehr schwierig sein. Denn dies ist die zugrunde liegende Datenverarbeitung. Eine einzelne Bewegung wirkt sich auf den gesamten Körper aus.
Ich denke, der richtige Punkt ist, dass die Datenbank eine Datensicherungsmaschine ist. Wie zu verstehen ist, müssen wir nur die Gültigkeit der Datenspeicherung sicherstellen. Dies ist ursprünglich die Kernfunktion der Datenbank, aber aufgrund der praktischen Sortierung und anderer Funktionen der Datenbank muss jeder zu viel Verarbeitung der Datenbank überlassen. Wenn ein Benutzer klickt, übergibt PHP viele Aufgaben an die Datenbank und stellt die Ergebnisse dann dem Benutzer zur Verfügung. Das ist unfair gegenüber der Datenbank. Deshalb fingen alle an, sich über die Leistung der Datenbank zu beschweren.
Lassen Sie uns in Bezug auf diesen Standpunkt ein weiteres Beispiel nennen. Ich habe einmal ein großes Internetunternehmen besucht (im Grunde weiß es jeder in China, der auf das Internet zugreift, aber ich habe gelernt, dass sie anders sind). Unternehmen nutzen Datenbanken. Sie stellten mir stolz vor, dass sie eine zweite Datenbank außerhalb der Datenbank haben (ich nenne sie hier die zweite Datenbank). Warum heißt es die zweite Datenbank? Es stellt sich heraus, dass es sich um ein Caching-System handelt. Wie erhalten Entwicklungsingenieure Daten aus diesem Cache-System? Der technische Direktor sagte stolz, dass ihr Caching-System über SQL-Abfrageanweisungen verfügt. Ich war damals überrascht, aber dann dachte ich, ich brauche das wirklich. Denn wenn Ihr Cache-System ein bestimmtes Niveau erreicht, ist es sehr kompliziert, Daten aus dem Cache abzurufen. Schreiben Sie einfach eine SQL-Abfrageanweisung und lassen Sie das Cache-System die Daten analysieren, verarbeiten und zurückgeben. Und sie sagten mir, dass an ihrer Stelle PHP aufgefordert wird, die Daten aus dem Cache-System zu lesen, auch wenn PHP verwendet wird.
Wenn Sie dieses Problem also bewältigen können, speichern Sie die Daten in der Datenbank, dann dient die Datenbank nur als Backup. Dann verwenden Sie Ihre eigene mittlere Schicht, um die Analysedaten zu verarbeiten. Dies hat zur Folge, dass mehr als 90 % der Benutzer nicht auf die Datenbank zugreifen. Manche Leute werden sagen: Ist das nicht etwas Ähnliches wie ein Verbindungspool? Ja, da der Engpass der Datenbank nicht gelöst werden kann, können wir nur eine Zwischenschicht zwischen dem Webserver und der Datenbank hinzufügen, um die Pufferung durchzuführen.
Vielleicht wird jeder sagen: Tsk, das wussten wir schon. Nun, was ich hier sagen möchte, sind die beiden Gedanken, die es ausgelöst hat:
Erstens verfügen einige Sprachen bereits über eine Verbindungspool-Technologie, und Programmierer können Verbindungspools problemlos zum Erstellen großer Anwendungen verwenden. Wenn sie also glauben, dass PHPer nur die Datenbank verwenden wird, können wir dann sagen, dass sie nur den Verbindungspool verwenden werden? Was ist der konzeptionelle Unterschied zwischen Verbindungspooling und Datenbank?
Zweitens: Hat PHPer, als er mit dem Aufbau seines eigenen Caching-Systems begann, die Ebene durchbrochen, dass PHPer nur Datenbanken verwendet? Weil er an der Verarbeitung der Datenlogik beteiligt ist. Ist er also immer noch ein Basismensch?
Schließlich sind PHPer, die wissen, wie man unabhängig denkt, keine Basisleute, die alles der Datenbank überlassen.