Portal > Foren > PHP > PHP-Programmierung > Performance Frage, ECHO vs. ?> <? + Breite MySQL Abfragen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 09.12.2005, 11:10 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

Guten Tag,

Ich entwickle gerade an einem Script für eine größere Homepage, nun will ich mit PHP eine HTML Seite aufbauen, da wir aber ziemlich auf die Performance (Hauptsächlich auf die CPU Last) achten müssen hier meine Frage:
Was ist schneller:
PHP-Code:
<?php
$variable 
"test";
echo(
"<html><tags>$variable</html>");
//...weiteres Coding
?>
Oder:
PHP-Code:
<?php
$variable 
"test";
?>
<html><irgentwas><?=$variable?></html>
<?
//...weiteres Coding
?>
Weitere Frage:
Was kostet mehr? 1 MySQL abfrage auf eine Breite tabelle (In der alles steht) oder mehrere SQL abfragen auf mehrere verteilte Tabellen, nur falls nötig. (Es geht mehr um die CPU Last, nicht so sehr um die Zugriffszeiten, was aber auch interresannt wäre)

Die Probleme hören sich zwar trivial an, aber bei einer Seite mit 20.000 Benutzern und mehr haben wir ziemlich zu kämpfen mit so Problemen. Für weitere Tipps was viel Performace kostet, bzw. was ich unterlassen sollte wäre ich natürlich auch dankbar

Danke im vorraus, Viele Grüße,
KK

Geändert von Kriskra (09.12.2005 um 11:12 Uhr).
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 11:38 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

http://www.warrenfaith.de/performance.php (offline)

dort kannst du einen kurzen test sehen den ich anhand deiner vorgaben gemacht habe.
du siehst auch einen unterschied, sprich die 2. variante ist schneller.

Der Quellcode ist unten drunter, sowie die zeitmessungen...

Die Frage 2 wird schon durch deine Performanceprobleme gelöst. Wenn du eine breite Tabelle abfragst, braucht dein ergebnis deutlich mehr speicherplatz als wenn du nur die wirklich notwendigen daten aus mehreren kleineren tabellen erstellst.
allerdings wäre ein performancetest auch hier interessant.

ich hoffe ich konnte weiterhelfen
__________________
I did it my way - Senseless-Blog

Geändert von WarrenFaith (15.08.2007 um 23:19 Uhr).
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 13:00 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

Hi,

Danke für deinen ausgiebigen Test
Jedoch:

Laufzeit Test1: 0.029 Sekunden
Laufzeit Test2: 0.029 Sekunden

Nach dem ersten mal (refresh) war das 2. deutlich schneller, nach dem 3. mal beides nurnoch 0.001 Sekunden, hat die dinger also schneinbar in den cache geladen, von meinem standpunkt hatte ich also leider kein brauchbares Ergebnis.
Jedoch könnte ich mir deine Aussage gut erklären, da ja beim Echo der Parser erst die eingabe prüft (Ob String etc.), beim beenden des PHP Tags, interessiert es PHP ja nicht was in der Klammer steht, PHP "merkt" erst den nächsten PHP tag und kann diesen direkt verabeiten.

Bei der MySQL abfrage ist eine Performance analyse wirklich interesannt, ich werde anhand deines Beispieles eines anferigen wenn ich die Zeit dazu finde.

Jedoch ist Speicherbedarf und Laufzeit wirklich gleich zu setzen mit CPU auslastung des Servers?

Danke nochmals,
Viele Grüße,
KK
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 13:10 Nach oben    #4
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Laufzeit Test1: 0.191 Sekunden
Laufzeit Test2: 0.090 Sekunden

egal wie ich refreshe... gehst du vielleicht über einen proxy ins netz?

speicherbedarf stellt sicherlich neben cpu die nächste problemzone bei der performance dar. deswegen sollte speicherschonend programmiert werden.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 13:47 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

*nickt* Das ist ein eindeutiges Ergebnis. Und ja an dem Proxy wird es wohl liegen, du hast recht, bin im Geschäft, habe also kaum eine andere Möglichkeit

Das ist verständlich @ speicherschonend, jedoch haben wir im moment eher das Problem mit der CPU als mit dem Speicher, wie sieht es aus, kann man auch irgentwie herausfinden, welche Methode nun für die CPU schonender wäre? Wo mir gerade eine kleine zwischenfrage einfällt, ist es möglich den aktuellen Traffic des Servers anzuzeigen?

Danke & Viele Grüße,
KK
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 13:51 Nach oben    #6
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

sollte der webalizer bei euch installiert sein, dann kannst du den traffic überprüfen (weiß ja nicht wer euer anbieter ist, bzw ob ihr den server selbst hostet).
einfach mal schauen unter: www.deinedomain.de/report (ist das standardverzeichnis vom webalizer). dort hast du eine gute übersicht.
wenn ihr das nicht habt, schaut ob ihr es euch installieren wollt bzw ob euer provider euch nicht sowas anbietet, denn er müsste es ja auch wissen.

ansonsten gibt es ein gutes tool (dafür braucht ihr aber root-rechte auf eurem server) über das ihr euren server administrieren könnt.
www.e-smi.de dort könnt ihr es runterladen (ist zwar noch in der beta, aber die prozessorliste und die grafische auswertung der cpu-last ist schon echt gut)
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 14:30 Nach oben    #7
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

Klar haben wir einen eigenen Server Glaube mit 20k Usern und einigem an traffic, wär's etwas hart einen Dovider zu finden der uns will ^^

Wir benutzen CPannel, so können wir die Computerlast recht gut überwachen, jedoch dachte ich an einen PHP befehl für die Prozessorlast/Aktuellen Traffic (Zur Info, es ist ein Linuxserver).

Auch im Bezug zu meiner letzten Frage, wie könnte ich herausfinden welcher Befehl (1. Post) mehr Traffic benötigt?

Viele Grüße,
KK
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 14:35 Nach oben    #8
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Letztenendes erzeugt PHP kein Traffic (es sei denn die Datenbank ist auf einem extra Server und der Traffic dorthin wird auch gezählt). Nur die letztendliche Seite, die du mittels HTML und PHP erstellst und mit Daten füllst frist Traffic.

Wenn du also wissen willst, wieviel Traffic eine bestimmte Seite verursacht, musst du diese einfach Lokal speichern oder per rechtklick und dann auf "Seiten Information" gehen.
Diese Seite hier braucht z.B. 73kb laut dieser Info (wobei diese meist nicht so genau ist wie das speichern der seite, dann hast du nämlich auch alle Bilder dabei)

ansonsten müsstest du über php auf den server zugreifen und über befehle wie ps die prozessorlast auslesen (gibt vielleicht was besseres als ps). eine andere methode gibt es meines wissens nach nicht
__________________
I did it my way - Senseless-Blog

Geändert von WarrenFaith (09.12.2005 um 14:46 Uhr).
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 14:46 Nach oben    #9
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

hrhr witzbold, meinte ich ja, war ja nicht auf PHP bezogen, sondern auf die frage ob wir einen eigenen Server besitzen, aber gut das sei nun dahin gestellt... Und das mit der Seitengröße erscheint logisch, solange diese (wie ich vorhin erwähnte) nicht dynamisch erstellt wird Aber gut...

@ps, danke, hätte man drauf kommen können

Zurück zu meiner eigentlichen Frage: "Was braucht mehr CPU?"
Zitat:
PHP-Code:
<?php 
$variable 
"test"
echo(
"<html><tags>$variable</html>"); 
//...weiteres Coding 
?>
Oder:

PHP-Code:
PHP-Code:
<?php 
$variable 
"test"
?> 
<html><irgentwas><?=$variable?></html> 
<? 
//...weiteres Coding 
?>
Danke und Viele Grüße,
KK
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 14:52 Nach oben    #10
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

[vermutung] soweit ich weiß kann man apache so einstellen, dass er mehr als x% cpulast nicht verbraucht, dementsprechend würde ich behaupten, dass sich die cpulast bei 20.000 usern eh so aufteilt, dass sie nicht in der last an sich, sondern in der verlängerten verarbeitungszeit des skripts deutlich wird.

beispiel:
user1 ruft eine cpu-fressende seite auf. cpulast bei 100%, dauer des skripts 10 sekunden

user1 ruft erneut die seite auf, sowie user2, 3 und 4.
cpulast ist wieder bei 100% sowie einer skriptlaufzeit von 40 sekunden.

Fazit: eigentlich ist es egal
[/vermutung]
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 17:21 Nach oben    #11
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.183
Standard

Zitat:
Zitat von Kriskra
hrhr witzbold, meinte ich ja, war ja nicht auf PHP bezogen, sondern auf die frage ob wir einen eigenen Server besitzen, aber gut das sei nun dahin gestellt... Und das mit der Seitengröße erscheint logisch, solange diese (wie ich vorhin erwähnte) nicht dynamisch erstellt wird Aber gut...

@ps, danke, hätte man drauf kommen können

Zurück zu meiner eigentlichen Frage: "Was braucht mehr CPU?"
Zitat:
PHP-Code:
<?php 
$variable 
"test"
echo(
"<html><tags>$variable</html>"); 
//...weiteres Coding 
?>
Oder:

PHP-Code:
PHP-Code:
<?php 
$variable 
"test"
?> 
<html><irgentwas><?=$variable?></html> 
<? 
//...weiteres Coding 
?>
Danke und Viele Grüße,
KK

instalier dir einen lokalen xampp und teste es doch ?

tests auf produktivsystemen kann man was auslastung etc angeht in die tonne kicken, also mach ein beispielscript, lass es in einer schleife zig mal laufen und das mehrfach und vergleich die zeiten.
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2005, 19:07 Nach oben    #12
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

Hmm gibt es eine art performace analyse tool für PHP? Also ein Programm/Script mit dem ich explizit herausfinden kann, was die meisten Ressourcen verbraucht, bzw. die längste Laufzeit hat?

Danke und Viele Grüße,
KK

Geändert von Kriskra (09.12.2005 um 19:31 Uhr).
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.12.2005, 01:08 Nach oben    #13
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.183
Standard

kann man doch alles selbst testen,
ein linux vorrausgesetzt mit:

www.php.net/memory_get_usage
www.php.net/microtime
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.12.2005, 05:14 Nach oben    #14
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

wenn du so auf performance ausbist wirst du um ein professionelles tool
ala Zend nicht herumkommen

das Zend Studio bietet alles was das Herz begehrt (Analyse, debugging usw. )
man kann auch einen direkten test der erstellten anwendung auf dem server mit einbeziehen

nur solche verfahren machen sinn und nicht vermutungen

mfg

[edit]

der einsatz einer sinnvollen Cacheengine sollte weiteres bringen
__________________
Code:
eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); 

Geändert von J33d3X (10.12.2005 um 05:48 Uhr).
J33d3X ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 19:17 Nach oben    #15
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

Zitat:
Zitat von J33d3X
wenn du so auf performance ausbist wirst du um ein professionelles tool
ala Zend nicht herumkommen

das Zend Studio bietet alles was das Herz begehrt (Analyse, debugging usw. )
man kann auch einen direkten test der erstellten anwendung auf dem server mit einbeziehen

nur solche verfahren machen sinn und nicht vermutungen

mfg

[edit]

der einsatz einer sinnvollen Cacheengine sollte weiteres bringen
Hi Jeedex,

Deine Ratschläge hören sich ja sehr vielversprechend an. Ich habe mir nun eine kostenlose Evaluationsversion von dem angesprochenen Zend Studio beschafft, leider ist mir nicht ersichtlich wie es mit dieser Software möglich sein soll eine Performance Analyse meines Codes durch zu führen.

Eine Cacheengine *hmm* Könntest du mir da vielleicht eine empfehlen? Wohlmöglich noch kostenlos? (Jedoch solange es sich in einem Preislichen Ramen häld wäre ich für Empfehulgen natürlich auch dankbar...)

Vielen Dank und Grüße,
KK

Geändert von Kriskra (13.12.2005 um 19:50 Uhr).
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 21:17 Nach oben    #16
Jay
Gast
 
Beiträge: n/a
Standard

Cache Engine? Schreibe dir doch selbst einen Cache (10-15 Minuten). Ansonsten Cache Lite.

Welche Version von ZDE hast du?

@J33d3X

http://zend.com/store/products/zend-...rsion-diff.php

Ich habe ZDE 5 Professional. Performance testen geht nur mit der Enterprise.

Aber das geilsten am Zend Studio ist die Unterstützung der wichtigsten Datenbanken. Ich brauche zB keinen MySQL Administrator oder phpMyAdmin mehr, geht alles über zend.

Geändert von Jay (13.12.2005 um 21:25 Uhr).
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 13:07 Nach oben    #17
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

Zitat:
Zitat von Fat Tony
Cache Engine?
Zitat:
Zitat von Fat Tony
Schreibe dir doch selbst einen Cache (10-15 Minuten). Ansonsten Cache Lite.

Welche Version von ZDE hast du?

@J33d3X

http://zend.com/store/products/zend-...rsion-diff.php

Ich habe ZDE 5 Professional. Performance testen geht nur mit der Enterprise.

Aber das geilsten am Zend Studio ist die Unterstützung der wichtigsten Datenbanken. Ich brauche zB keinen MySQL Administrator oder phpMyAdmin mehr, geht alles über zend.
Hallo,
Eine eigene Cache Engine *hmm*. Ich würde schon eine Professionelle Engine bevorzugen, da es sich bei meinem Service doch um große Datenmengen handelt, die meist mehrmals in kurzer Zeit geladen werden müssen. Da sollte die Cache Engine schon ausgereift sein, es gibt viele Möglichkeiten einen Cache, mehr oder weniger schnell zu speichern und wieder ab zu rufen, da hätte ich schon gerne eine professionelle Lösung um auch dort die Performace zu wahren... Kann mir jemand eine Lösung empfehlen, die gut, getestet und natürlich auch performant ist?

Das mit der Enterprise Edition erklärt einiges, Danke.

Danke und Viele Grüße,
KK
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 13:57 Nach oben    #18
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Der Turck MM_Cache sollte dafür gut sein.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 16:56 Nach oben    #19
Neuer Benutzer
 
Registriert seit: 09.12.2005
Beiträge: 9
Standard

Zitat:
Zitat von Lars
Der Turck MM_Cache sollte dafür gut sein.
Könntest du mir vielleicht kurz die vor/nachteile nennen, bzw. wie du deine Entscheidung begründest? (Bzw. eine Refferenz auf ein Dokument oder so...)

Danke und Grüße,
KK
Kriskra ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 20:35 Nach oben    #20
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Das Ding soll ab PHP6 offizieller PHP-Cache sein, deshalb hab ich ihn genannt

Mehr Infos dürfte es auf php.net geben.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
An interne ID eines Objektes rankommen Basti PHP-Programmierung 21 29.03.2007 15:10
Bash-Script ljungi Sonstige Programmiersprachen 9 04.02.2007 22:11
[sh script] ausgabe in variable umleiten beny_mcde Sonstige Programmiersprachen 15 01.03.2006 16:50


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:12 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44