Ich habe viele Freunde gesehen, die an verschiedenen Stellen gefragt haben, wie man ein statisches Artikelsystem in PHP generiert. Ich habe ein solches System schon einmal erstellt, daher möchte ich Ihnen einige Meinungen mitteilen. In der PHP-Schulung von Band of Brothers werden zunächst einige grundlegende Konzepte besprochen.
1. PHP-Skripte und dynamische Seiten.
PHP-Skript ist ein serverseitiges Skriptprogramm, das durch Einbettung und andere Methoden mit HTML-Dateien gemischt werden kann. Es kann auch Benutzeranforderungen in Form von Klassen, Funktionskapselungen usw. in Form von Vorlagen verarbeiten . Auf die eine oder andere Weise sind die Grundlagen dies. Der Client stellt eine Anfrage für eine bestimmte Seite. -----> Der WEB-Server führt das entsprechende Skript zur Verarbeitung ein. -----> Das Skript wird in den angegebenen PHP-Parser geladen vom Server Das Skript wird vom Browser analysiert, um ein HTML-Sprachformular zu bilden ----> Die analysierte HTML-Anweisung wird in Form eines Pakets an den Browser zurückgesendet. Daraus ist nicht schwer zu erkennen, dass PHP nach dem Senden der Seite an den Browser nicht mehr existiert und in HTML-Anweisungen konvertiert und analysiert wurde. Bei der Client-Anfrage handelt es sich tatsächlich um eine dynamische Datei. PHP analysiert sie in die entsprechende Seite und sendet sie dann an den Browser zurück. Diese Art der Seitenbehandlung wird als „dynamische Seiten“ bezeichnet.
Zweite, statische Seite.
Statische Seiten beziehen sich auf Seiten, die auf der Serverseite vorhanden sind und nur HTML und JS, CSS und andere clientseitige Skripte enthalten. Die Art und Weise, wie es gehandhabt wird, ist. Der Client stellt eine Anfrage für eine bestimmte Seite----> Der WEB-Server bestätigt und lädt eine bestimmte Seite----> Der WEB-Server gibt die Seite in Form eines Pakets zurück. Aus diesem Prozess können wir die dynamischen Seiten vergleichen und sehen. Dynamische Seiten müssen vom PHP-Parser des WEB-Servers analysiert werden und müssen normalerweise eine Verbindung zur Datenbank herstellen und Datenbankzugriffsvorgänge ausführen, bevor sie ein HTML-Sprachinformationspaket bilden können, während statische Seiten nicht analysiert oder verbunden werden müssen Die Datenbank kann direkt gesendet werden, wodurch der Serverdruck erheblich verringert, die Serverlastkapazität verbessert und die Seitenöffnungsgeschwindigkeit sowie die allgemeine Website-Öffnungsgeschwindigkeit erheblich verbessert werden können. Der Nachteil besteht jedoch darin, dass die Anfrage nicht dynamisch verarbeitet werden kann und die Datei tatsächlich auf dem Server vorhanden sein muss.
3. Vorlagen und Vorlagenanalyse.
Die Vorlage wurde noch nicht mit Inhalts-HTML-Dateien gefüllt. Zum Beispiel:
temp.html
PHP-Verarbeitung:
templetest.php
> $title = "http:/ /siyizhu.com test template";
$file = "TwoMax Inter test template,
Autor: Matrix@Two_Max";
$fp = fopen ("temp.html", "r");
$content = fread ($fp,filesize ("temp.html"));
$content = str_replace ("{ file }",$file,$ content);
$content = str_replace ("{ title }",$title,$content);
?> 🎜> Bei der Vorlagen-Parsing-Verarbeitung handelt es sich um den Prozess des Füllens (Inhalts) der nach der PHP-Skript-Analyse und -Verarbeitung erhaltenen Ergebnisse in die Vorlage. Normalerweise mit Hilfe von Template-Klassen. Derzeit gehören zu den beliebtesten Vorlagen-Parsing-Klassen phplib, smarty, fastsmarty und so weiter. Das Prinzip der Template-Parsing-Verarbeitung ist normalerweise das Ersetzen. Es gibt auch einige Programmierer, die es gewohnt sind, Beurteilungen, Schleifen und andere Verarbeitungen in Vorlagendateien einzufügen und diese mit Parsing-Klassen zu verarbeiten. Die typische Anwendung ist das Blockkonzept, bei dem es sich einfach um eine Schleifenverarbeitung handelt. Das PHP-Skript gibt die Anzahl der Schleifen, die Art der Schleife usw. an, und dann implementiert die Template-Parsing-Klasse diese Vorgänge.
Okay, nachdem wir die Vor- und Nachteile von statischen und dynamischen Seiten verglichen haben, sprechen wir nun darüber, wie man PHP zum Generieren statischer Dateien verwendet.
Das Generieren statischer Seiten durch PHP bezieht sich nicht auf das dynamische Parsen und Ausgeben von HTML-Seiten durch PHP, sondern auf die Verwendung von PHP zum Erstellen von HTML-Seiten. Da HTML nicht beschreibbar ist, muss das von uns erstellte HTML gleichzeitig gelöscht und neu generiert werden, wenn es geändert wird. (Natürlich können Sie auch reguläre Regeln verwenden, um es zu ändern, aber ich persönlich denke, dass es schneller ist als das Löschen und Neugenerieren, was den Gewinn nicht wert ist.)
Zurück zum Geschäft. PHP-Fans, die PHP-Dateioperationsfunktionen verwendet haben, wissen, dass es in PHP eine Dateioperationsfunktion fopen gibt, die eine Datei öffnet. Wenn die Datei nicht vorhanden ist, versuchen Sie, sie zu erstellen. Dies ist die theoretische Grundlage, auf der PHP zum Erstellen von HTML-Dateien verwendet werden kann. Solange der Ordner, in dem HTML-Dateien gespeichert werden, über Schreibberechtigungen verfügt (z. B. Berechtigungsdefinition 0777), kann die Datei erstellt werden. (Für UNIX-Systeme müssen Win-Systeme nicht berücksichtigt werden.) Nehmen wir das obige Beispiel als Beispiel, wenn wir den letzten Satz ändern und angeben, dass eine statische Datei mit dem Namen test.html im Testverzeichnis generiert werden soll:
< ?php
$title = "http://siyizhu.com test template";
$file = "TwoMax Inter test template,
Autor: Matrix@Two_Max" ;
$fp = fopen ("temp.html", "r");
$content = fread ($fp,filesize ("temp.html"));
$content = str_replace ("{file}",$file,$content);
$content = str_replace ("{title}",$title,$content);
// echo $content
$filename = "test/test.html";
$handle = fopen ($filename,"w"); //Öffnen Sie den Dateizeiger und erstellen Sie die Datei
/*
Überprüfen Sie, ob die Datei erstellt und beschreibbar ist
;
}
if (!fwrite ($handle,$content)){ //Informationen in die Datei schreiben
die ("Datei generieren" .$filename. „Fehlgeschlagen!“); Erfolg!") ;
?>
Referenz für Lösungen für häufige Probleme in der Praxis:
1. Artikellistenprobleme:
Felder erstellen und zeichnet den Dateinamen in der Datenbank auf. Bei jeder Generierung einer Datei wird der automatisch generierte Dateiname in der Datenbank gespeichert. Bei empfohlenen Artikeln verweisen Sie einfach auf die Seite im angegebenen Ordner, in der die statischen Dateien gespeichert sind. Verwenden Sie PHP-Operationen, um die Artikelliste zu verarbeiten, als Zeichenfolge zu speichern und diese Zeichenfolge beim Generieren der Seite zu ersetzen. Fügen Sie beispielsweise die Markierung {articletable} zur Tabelle hinzu, in der die Artikelliste auf der Seite platziert wird, und in der PHP-Verarbeitungsdatei:
$title = "http ://siyizhu.com Test template";
$file = "TwoMax Inter test template,
author:Matrix@Two_Max";
$fp = fopen ("temp.html ","r") ;
$content = fread ($fp,filesize ("temp.html"));
$content = str_replace ("{file}",$file ,$content);
$content = str_replace ("{title}",$title,$content);
//Starte die Generierung einer Liste
$list = ' ';
$sql = "select id,title,filename from Article";
$query = mysql_query ($sql); while ($result = mysql_fetch_array ( $query)){
$list .= ''.$result['title'].'
';
}
$content .= str_replace ("{articletable}" ,$list,$content);
// Ende der Listengenerierung
// echo $content
$filename = "test/ test.html";
$handle = fopen ($filename,"w"); //Öffnen Sie den Dateizeiger und erstellen Sie die Datei
/*
Überprüfen Sie, ob die Datei ist erstellt und beschreibbar
*/
if (!is_writable ($filename)){
die ("Datei: „.$filename.“ ist nicht beschreibbar , bitte überprüfen Sie seine Eigenschaften und versuchen Sie es erneut! Datei erstellen".$filename."Success!" );
?>
Zweitens das Paging-Problem.
Wenn wir eine Paginierung angeben, gibt es 20 Artikel pro Seite. Nach der Datenbankabfrage gibt es 45 Artikel in einer bestimmten Unterkanalliste. Zuerst erhalten wir die folgenden Parameter durch Abfrage: 1. Gesamtzahl der Seiten 2. Anzahl der Artikel pro Seite. Der zweite Schritt, for ($i = 0; $i < allpages; $i ), die Erfassung von Seitenelementen, die Analyse und die Artikelgenerierung werden alle in dieser Schleife ausgeführt. Der Unterschied besteht darin, dass der Satz die ("Create file".$filename."Success!"; entfernt und in der Anzeige nach der Schleife platziert wird, da diese Anweisung die Programmausführung abbricht. Beispiel:
< ?php
$fp = fopen ("temp.html", "r");
$content = fread ($fp,filesize ("temp.html")); >
$onepage = '20';
$sql = "select id from Article wherechannel='$channelid'"; 🎜> $num = mysql_num_rows ($query);
$allpages = ceil ($num / $onepage);
for ($i = 0;$i<$allpages; $ i ){
if ($i == 0){
$indexpath = "index.html";
} else {
$indexpath = "index_".$i."html";
}
$start = $i * $onepage
$list = ''; > $sql_for_page = "select name,filename,title from Article where channel='$channelid' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page){
$list .= ''.$title.'
'
}
$content = str_replace (" {articletable}",$list,$content);
if (is_file ($indexpath)){
@unlink ($indexpath); //Wenn die Datei bereits existiert, löschen Sie sie
}
$handle = fopen ($indexpath,"w"); //Öffnen Sie den Dateizeiger und erstellen Sie die Datei
/*
Überprüfen Sie, ob die Datei erstellt und beschreibbar ist. */
if (!is_writable ($indexpath)){
echo „File: „.$indexpath.“ ist nicht beschreibbar. Bitte überprüfen Sie das Attribut und versuchen Sie es noch einmal! echo „Datei generieren“.$indexpath.“Fehlgeschlagen!“; //Ändern zu echo
}
fclose ($handle); //Zeiger schließen
}
fclose ($fp);
die („Die Generierung der Auslagerungsdatei ist abgeschlossen. Wenn die Generierung unvollständig ist, überprüfen Sie bitte das Dateiberechtigungssystem und führen Sie eine Neugenerierung durch!“); > ?>
Die allgemeine Idee ist, dass der Seite nach Bedarf weitere Datengenerierung, Dateneingabe- und -ausgabeprüfung, Paging-Inhalt usw. hinzugefügt werden können.
Im eigentlichen Artikelsystemverarbeitungsprozess müssen noch viele Probleme berücksichtigt werden. Es gibt viele Unterschiede zwischen www.lampbrother.net und dynamischen Seiten, die beachtet werden müssen. Aber die allgemeine Idee ist diese, und andere Aspekte können durch Analogie gezogen werden.