html, php und mysql - Seite 2

Seite 2 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/html_php_und_mysql_47929/page_2 - zur Vollversion wechseln!


BuSHidO schrieb am 16.09.2002 um 08:33

tjo deshalb sind auch leute mit erfahrung mehr gefragt ;)


Philipp schrieb am 16.09.2002 um 14:08

Ganz brauchbar für Einsteiger ist das Buch "PHP4: Grundlagen und Profiwissen" von Jörg Krause. In diesen Buch steht zwar nicht alles drinnen (PHP entwickelt sich ziemlich rasch weiter) aber fürs erste ist es ein guter Anfang :)

Zum Thema Performanceoptimierungen:
Man lernt mit den Jahren dazu. Ein Tutorial das erklärt wie man PHP/MySQL basierende Seiten optimiert habe ich bisher noch nicht gesehen.

Zwei Tipps:
1) Persistente Verbindungen zur MySQL Datenbank bringen nichts. Im Gegenteil der Speicherverbrauch am Server steigt dramatisch an.

2) DB Seiten wenn möglich in Textdateien cachen um sie beim zweiten Aufruf ohne Datenbankzugriff aufzubauen.


BuSHidO schrieb am 16.09.2002 um 14:57

juhu lass ma die disken rauchen =)


Philipp schrieb am 16.09.2002 um 15:41

Zitat von BuSHidO
juhu lass ma die disken rauchen =)
:confused:

Falls das eine Anspielung auf das Caching ist. Wo glaubst du werden die MySQL Datenbanken gespeichert?

Eine Gecachte Seite kann wesentlich effektiver sein als jedes Mal eine neue Datenbankanfrage zu starten. Jede Verbindung zur Datenbank kostet Speicher und CPU Zeit.

Bestes Beispiel das Caching sehr viel bringt ist http://www.majorgeeks.com

MajorGeeks ist der Hauptmirror von ManOnion bzw. LavaSoft (Ad-Aware) und hat relativ viele Zugriffe. Der Serverload am MajorGeeks Server ist derzeit aber nur: 0.25, 0.28, 0.26 wobei 5 Websites auf den Server gehostet sind.

Würde man jetzt PHP-Nuke Installieren bin ich sicher das der Serverload locker auf 5.00-10.00 ansteigt ;)


flaimo schrieb am 16.09.2002 um 16:03

Zitat von Philipp
2) DB Seiten wenn möglich in Textdateien cachen um sie beim zweiten Aufruf ohne Datenbankzugriff aufzubauen.

wo gibts'n a paar gute caching tutorials? weil mit DB last verringern und caching hab i mi nu nie beschäftigt. bin gerade dabei mein kleines cms in OOP umzusetzen und smarty zu integrieren, obwohl i festgestellt habe, dass letzteres eh fast hinfällig ist, wenn ma gscheite klassen baut, da dann die eigentliche php datei eh quasi nur mehr ein template ist.


Philipp schrieb am 16.09.2002 um 16:49

Zitat von flaimo
wo gibts'n a paar gute caching tutorials?

Leider nein. Die ursprüngliche Idee habe ich mir aus Infopop's Ultimate Bulletin Board ausgeborgt ;)

Dennoch hier ein simples Caching Script das dir helfen sollte:
Code: PHP
<?php

// Seite gecacht? 
if (file_exists("gecachte_seite.inc.php")) {
	include("gecachte_seite.inc.php");
} else {

ob_start(); 

// Hier beginnt die Seite die gecacht werden soll

echo "Das ist ganz normaler Text der über echo ausgegeben wird";

// Ende der Seite

$seite = ob_get_contents(); 
ob_end_clean(); 

$datei = fopen("gecachte_seite.inc.php",w);
	fputs($datei,"$seite");
fclose ($datei);

echo $seite;
}

?>

Im ersten Teil schaut das Script ob die Datei "gecachte_seite.inc.php" existiert und inkludiert sie ggf. Falls nicht geht es weiter mit dem zweiten Teil.

Mit ob_start(); wird die Buffering Funktion aktiviert. Dadurch wird alles in einen Buffer zwischengespeichert statt es gleich am Bildschirm auszugeben.

$seite = ob_get_contents(); übergibt den Inhalt des Buffer der Variable $seite. Die gecachte Seite ($seite) wird jetzt in die Datei "gecachte_seite.inc.php" geschrieben.

Beim nächsten Aufruf findet das Script "gecachte_seite.inc.php" und inkludiert sie.

Im mittleren Teil des Script kann jedes beliebige PHP Script eingebaut werden :)


flaimo schrieb am 16.09.2002 um 17:04

ok, das prinzip leuchtet mir ein, obwohl man das wohl noch erweitern muss, weil man ja angeben sollte wie lang eine seite gecached werden sollte und ob sich inhaltnlich was geändert hat.

und wie schaut das aus mit DB abstract layers? ich hab im moment meinen eigenen kleinen geschrieben, der nix anderes macht als mysql funktionen auszuführen. in quasi jeder anderen klasse erzeuge ich davon ein objekt ($this->db->fetch_row($sql) ... usw) und hold mir die daten. ich hab aber so ein dumpfes gefühl dass das auch nicht sehr performant ist.


Philipp schrieb am 16.09.2002 um 17:22

Zitat von flaimo
ok, das prinzip leuchtet mir ein, obwohl man das wohl noch erweitern muss, weil man ja angeben sollte wie lang eine seite gecached werden sollte und ob sich inhaltnlich was geändert hat.

In dem Script das in die Datenbank schreibt baut man z.B. ein unlink("gecachte_seite.inc.php"); damit die gecachte Seite bei jeder Datenbankänderung gelöscht wird :)

Zitat
ich hab aber so ein dumpfes gefühl dass das auch nicht sehr performant ist.

Kommt auf die Programmierung an, es wird aber nicht sonderlich Auffallen. Das einzige was wirklich wichtig ist: Man sollte sowenig SQL Anfragen wie möglich an die Datenbank stellen.


flaimo schrieb am 16.09.2002 um 17:29

Zitat von Philipp
Man sollte sowenig SQL Anfragen wie möglich an die Datenbank stellen.



wenn man wirklich oop durchgehend verwendet, dann ist das wohl der kompromiss den man schließen muss, dass man viel mehr verbindungen hat. vorher habe ich eine abfrage für eine liste 10 von umfragen gehabt und jetzt halt sind es 11 anfragen. jeweils eine für das objekt "umfrage" und eine für das ermitteln der liste im objekt "umfrageliste".


watchout schrieb am 18.09.2002 um 00:21

wobei das mit geschicktem includen von extending-functions vielleicht sogar verringert werden kann... ;)


ähm, dazu fällt mir noch ein: gibts in php eigentlich sowas wie benutzerdefinierte umgebungsvariablen?




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025