#1
| ||||
| ||||
Zwei Ideen rund um PHP und MySQL - Meinungen gesuchtZur Zeit bin ich wie wild am Programmieren und mir sind mittlerweile so einige Ideen gekommen, wie man sich die eine oder andere Aufgabe vereinfachen könnte. Weil ich mich aber nicht als Experten bezeichnen würde, frage ich mal die Exeperten im Forum bezüglich dieser beiden Ideen. Session als Speicherort Bisher habe ich Sessions vorwiegend nur dazu genutzt, dass ich kurz einige Daten zwischenspeicher, z.B. die Logindaten. Doch kann man einiges mehr an Daten dort speichern. Zum Beispiel kam es mir in den Sinn dort sämtlich Einstellungen, Templates und Phrasen zu speichern, so dass man pro Seite auf einige Abfragen weniger kommt. Dies würde natürlich bedeuten, dass beim erstmaligen Laden der Seite entsprechend viele Daten aus der Datenbank gelesen werden müßten. Auch muss auf jeder Seite geprüft werden, ob die Daten existieren. Es kommt natürlich immer etwas auf die einzelnen Projekte an, auf welche man das anwenden möchte. Cachen von Daten Dies ist mir beim erstmal im vB3 aufgefallen, aber die Idee ist gut. Verschiedene Daten werden als Array in einer Tabelle gespeichert und können von dort bequem ausgelesen werden. So sinkt die Anzahl der Datenbankabfragen, jedoch die Datenmenge. Würde gerne mal eure Meinung dazu hören |
#2
| ||||
| ||||
Also bei sessions muss ich passen, hab mich da noch nicht so genau damit auseinandergesetzt um da auf effizienzfragen antworten zu können, aber ich denke nicht, dass das so effizient ist, sonst würde mans schon hernehmen Zum Caching: Jup, das ist an und für sich eine sehr gute sache, aber du musst das immer relativ sehen. Nimm als beispiel die vb.org Startseite. Jede hackliste/news und was weis ich noch alles ist gecacht. Das liegt daran, weil sich die meisten Listen nur selten ändern, und deshalb liegt alles gut in nem serialisierten Array. Hast du aber info's die sich häufig ändern, dann haste durch das serialisieren zu viel overhead, und der effekt hebt sich auf, oder kehrt sich sogar um __________________ Stefan Käser Administrator von www.vbulletin.org Das Publikum ist so einfältig, lieber das Neue als das Gute zu lesen. Arthur Schopenhauer |
#3
| ||||
| ||||
Ja, darum habe ich mir natürlich auch schon gedanken werden. Bei meiner Website würden sich fast nie die Sprache und Templates ändern, so dass ich diese ohne Probleme komplett cachen könnte. Wenn sich etwas ändern sollte, dann kann ich den Cache ja via Script neu erstellen. Geplant ist außerdem, dass täglich um 4.00 morgens eine Reihe an Wartungsprogrammen aktiviert werden und in diesem Zeitraum die Website dann deaktiviert ist (htaccess). Unter anderem soll dort automatisch alle gecached Daten neu eingelesen werden. Sollte ich dies mit der Idee der Session kombiniert werden, dann wird automatisch in der Session die Timestamps mitgespeichert, welche gleichzeitig auch in einer Variable hardcoded gespeichert sind. Sobald die Variable neuer ist als die in der Session, erfolgt auch hier ein Reload der in der Session gespeicherten Daten. Naja, ich habe mir schon so einige Gedanken darum gemacht und die Idee gefällt mir ziemlich gut, nur frage ich lieber mal nach. |
#4
| ||||
| ||||
Die Sessions sind als Speicherort für eher kleinere Datenmengen sicher geeignet aber bei grösseren Datenmengen könnte das etwas problematisch werden, wenn jeder Besucher auf der Website, inklusive Templates, Sprachphrasen etc.pp. mehrere hundert kilobytes an Daten in der Session ablegt. Zumal diese Daten ja entsprechend verpackt (serialisierte Arrays etc.) und bei jedem Seitenaufruf wieder entpackt werden müssen. Caching generell ist aber eine gute Idee. Alle Daten die häufig abgerufen, aber selten geändert werden, sind praktisch zum Cachen. Dazu gehören dann beispielsweise Zugriffsrechte, Benutzergruppen, Templates (je nach Templateengine gibt es da vielleicht schone eingebaute Möglichkeiten) und, wie Xenon schon sagte, Listen die sich selten ändern. Jenachdem um was für eine Anwendung es sich handelt lassen sich noch mehr Möglichkeiten ausdenken die Serverbelastung des Scripts zu senken. Bei meinem Wiki beispielsweise liegt der "Flaschenhals" beim Übersetzen der WikiSyntax in HTML. Obwohl die Seiten nicht einfach komplett als HTML cachbar sind (einige Elemente wie Links hängen vom Inhalt bzw. der Existenz anderer Seiten ab) habe ich ein System getestet mit dem Seiten, bis auf einige Details, geparsed im Cache abgelegt werden - bei längeren Seiten hat das die Ausführungszeit des Scripts um bis zu 25% verringert. Abgesehen von den standardmäßig gecachten Daten würde ich also den Punkt in deinem Script suchen der den Server am meisten belastet - und sehen wie sich dort die Belastung reduzieren lässt. |
#5
| ||||
| ||||
Gut, das mit der Datenmenge habe ich mir auch schon gedacht. Aber die Daten muss man nicht unbedingt verpacken, sondern kann man ja als mehrdimensionalen Array speichern ( $_SESSION['phrasen']['xxx'] ). Ich werde vielleicht das ganze einfach mal für ein paar Tage im live testen. Mir ist aber bezüglich der Sessions gleich noch ein Sicherheitsaspekt aufgefallen, mit welchem man Websites noch etwas sicherer machen kann. Eine Variable wird, wie zum Beispiel die Seitenzahl bei einer mehrseitigen Aufzählung, in der Session speichern. Auf die folgende Seite gelangt man über die .php?go=nextpage und auf der folgenden Seite wird den die Seitenzahl in der Session erhöht. Das Beispiel ist jetzt von Sicherheitsaspekt nicht so großartig, aber vielleicht bei Formularen wie Löschung von Daten aus der Datenbank kann man es zumindest einigen Hackern schwieriger machen. Nur mal wieder eine Idee, dir mir gekommen ist... |
Stichworte |
- |
Themen-Optionen | |
Thema bewerten | |
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Ideen rund um Nullposter | TRS | Community Management, Administration und Moderation | 32 | 22.05.2005 11:10 |
PHP Scrips gesucht HILFE | Jochen2003 | Blog, CMS, Wiki und Sonstige | 5 | 15.04.2004 00:23 |
PHP & MySQL: Lizenzkonflikte wurden gelöst | Michael Przybyla | Boardunity-Talk | 5 | 06.04.2004 21:57 |