php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.06.2006, 11:28  
Neuer Benutzer
 
Registriert seit: 27.03.2005
Beiträge: 15
Geier
Geier eine Nachricht über ICQ schicken
Standard Performance - Was macht mehr Sinn? (Script-Splitting)

Hallo,

es geht darum, ein Hi-Traffic-Projekt (mehrere Millionen Aufrufe/Tag) zu optimieren. Ich denke da an 2 Varianten:

Variante 1:
Script1.php wird in jedem Fall aufgerufen und macht 1 SQL-Abfrage sowie die Ausgabe des Ergebnisses. Bei Erfolg wird es hier beendet. Dies ist bei ca. 80% aller Aufrufe der Fall. Sollte kein Ergebnis vorliegen (20%), so wird per Java-Script-Aufruf ein Script2.php aufgerufen, welches etwas umfangreicher ist und eine Ausgabemenge generiert und auch ausgibt. Der Aufruf per JavaScript steht nicht zur Diskussion und wird benötigt, um den HTTP_REFERER an Script2 zu übergeben.

Variante 2:
Script.php wird in jedem Fall aufgerufen und erledigt o.g. Aufgabe. Script.php ruft sich per JavaScript (s.o.) erneut mit einem zusätzlichen Parameter auf, falls kein Ergebnis gecached ist. Ist dieser Paramter gesetzt, so geht es an einer anderen Stelle im Script weiter. Vorteil: Einige Routinen müssen nicht doppelt vorgehalten werden. (ja, ich könnte die auch jeweils includen, aber das kostet wieder etliche ms Zeit.. so schnell sind Festplatten auch nicht und es geht wie gesagt um ein Hi-Traffic-Projekt und darum, das letzte rauszukitzeln). Nachteil an dieser Variante: Auch wenn das Script nach einer kurzen Ausgabe beendet wird, müßten etlliche Routinen mit kompiliert werden, die u.U. gar nicht gebraucht werden und das Script ist größer.

Daher meine 2 Fragen:
1. Wie wird ein php-Script intern kompiliert? Während der Laufzeit immer nur der Teil der gerade benötigt wird? Oder alles komplett, und erst danach erfolgt die Ausführung?
2. Welche Variante ist aus Performancegründen (und um ggf. die Serverload zu senken) sinvoller, Variante 1 oder Variante 2?

Ich hoffe, ihr versteht so ungefähr was ich meine

Gruß Volker
Geier ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.06.2006, 14:51  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

1. Es wird erst kompiliert, dann ausgeführt. Includes werden erst dann kompiliert, wenn der include auch ausgeführt wird.
2. Sieht beides ziemlich unsinnig aus.
Gegenüber einfachen konditionalen includes, also nur das zu includen, was auch gebraucht wird, sehe ich nur Nachteile.

PS: Includes sollten nur einmal über die Festplatte gehen und dann aus dem Cache kommen.
__________________
mod = master of disaster
Waq ist offline  
Alt 06.06.2006, 15:59  
Neuer Benutzer
 
Registriert seit: 27.03.2005
Beiträge: 15
Geier
Geier eine Nachricht über ICQ schicken
Standard

Ich habe mir jetzt mal die Mühe gemacht und beide Varianten ausgetestet. Ergebnis: Das gesplittete Script erzeugt eine dauerhafte Load von ca. 0.40, während das einteilige auf demselben Server meistens mit einer Load von über 2 lief. Somit scheint es sehr sinnvoll zu sein, nur das im Script zu haben was man auch für die jeweilige Ausführung benötigt, jedenfalls dann wenn man tausende Aufrufe in der Minute hat
Geier ist offline  
Alt 06.06.2006, 16:08  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Zitat:
Zitat von Geier
Somit scheint es sehr sinnvoll zu sein, nur das im Script zu haben was man auch für die jeweilige Ausführung benötigt, jedenfalls dann wenn man tausende Aufrufe in der Minute hat
Wo hab ich dem widersprochen?
Das Splitten ist allerdings eine reichlich hässliche Lösung (sowohl für den Benutzer als auch den Programmierer), mal ganz abgesehen davon, dass es Performance an einen unnötigen zweiten Seitenaufruf verschenkt.
__________________
mod = master of disaster
Waq ist offline  
Alt 06.06.2006, 20:14  
Neuer Benutzer
 
Registriert seit: 27.03.2005
Beiträge: 15
Geier
Geier eine Nachricht über ICQ schicken
Standard

dann sag mir doch mal wie ich den http_referrer mit php auslesen soll. also nicht den, wo ein scriptcode auf der userseite eingebaut ist sondern von wo der besucher zu dieser seite gefunden hat

beispiel: der scriptcode ist auf meineseite.de eingebunden und der besucher kam von google. ich muss mit meinem script auswerten können woher der besucher kam, um unzulässige referrer, z.b. besuchertäusche, auszugrenzen
Geier ist offline  
Alt 06.06.2006, 20:52  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Irgendwie sehe ich hier keinen Zusammenhang mehr zwischen dem Referer und deiner Ausgangsfrage. Den Referer findest du aber - falls gesetzt - in $_SERVER['HTTP_REFERER'].
xabbuh ist offline  
Alt 06.06.2006, 21:23  
Neuer Benutzer
 
Registriert seit: 27.03.2005
Beiträge: 15
Geier
Geier eine Nachricht über ICQ schicken
Standard

Die Frage ist ja erst dadurch aufgekommen dass mein 2. Seitenaufruf infrage gestellt wird. Nach meinen Vorgaben sollte ja Script1.php das Script2.php per Javascript aufrufen bzw. Script.php sollte sich selbst per Javascript unter anfügen eines weiteren Parameters aufrufen.

Der Wert in $_SERVER['HTTP_REFERER'] ist im übrigen nicht der Referrer den ich brauche, sondern den "darüber". Meine User bauen nämlich lediglich einen JavaScript Code in Ihren Webseiten ein und da komme ich mit $_SERVER['HTTP_REFERER'] nicht sehr weit
Geier ist offline  
Alt 06.06.2006, 23:53  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Eigentlich ist ein Referrer eine einfache "a ruft b auf"-Situation, wo dann b als Referrer a geliefert bekommt. Wer wen aufruft, und warum es denn mit JS funktioniert, hast Du jetzt endgültig verschleiert.
__________________
mod = master of disaster
Waq ist offline  
Alt 07.06.2006, 10:27  
Neuer Benutzer
 
Registriert seit: 27.03.2005
Beiträge: 15
Geier
Geier eine Nachricht über ICQ schicken
Standard

weil meine user einen javascript code auf ihren seiten einbauen

wenn du auf www.deineseite.de meinen scriptcode mit <script type="javascript" src="http://www.meineseite.de/meinscript.php"></script> aufrufst, kann ich mit dem php referrer in "meinscript.php" nicht ermitteln, wie der besucher auf deineseite gekommen ist. mit javascript hingegen geht es. der php-referrer würde nur die url ausgeben, wo der scriptcode eingebaut ist.
Geier ist offline  
Alt 07.06.2006, 14:28  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Also wenn ein Ergebnis da ist, wird das direkt inline in der Seite des Benutzers dargestellt, sonst wird weitergeleitet?
Prinzipiell könnte man durch konditionale Includes Variante 2 auf die Performance von Variante 1 tunen, und es wäre nichts mehr doppelt. Schneller würds wohl nicht werden, ausser Du kommst komplett ohne Weiterleitung aus.
__________________
mod = master of disaster
Waq ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
phpBB Loginscript in eigenes Login Script einbinden 2wuck PHP Tipps 2007 4 19.12.2005 23:10
[Erledigt] kurze frage zu screen in einem shell script Server, Hosting und Workstations 4 16.12.2005 21:22
[Erledigt] php script und ixed PHP Tipps 2005-2 14 12.10.2005 13:34
Der Sinn von ordnerbasierten Systemen PHP-Fortgeschrittene 8 09.10.2005 20:33
Login Script... Beitragsarchiv 1 16.08.2005 02:21
Kann mir jemand bei dem Script hier helfen? nicobischof PHP Tipps 2005-2 4 09.08.2005 20:15
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
Ganze Objekte an Script weitergeben dreamingof8a PHP Tipps 2004-2 6 23.11.2004 12:17
[Erledigt] python script mit php aufrufen... PHP-Fortgeschrittene 1 17.11.2004 17:11
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php script splitten

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:58 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.