php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.04.2005, 11:07  
Gast
 
Beiträge: n/a
Standard [Erledigt] Shop - Technischer Background

Moin!

Ich arbeite jetzt seit geraumer Zeit an einem sehr umfangreichen Onlineshop Produkt und wollte einfach mal eure Meinung zu verschiedenen technischen Aspekten hören.

1.) Verwendete "Fremdbibliotheken"
Für Datenbankabstraktion: ADO
Als Templatesystem kommt Smarty zum Einsatz
Ansonsten im Administrationsbereich, u.a. Javaapplets zum Uploaden von Bildern, Flash-"Programme" für Bildbearbeitung, Crossbrowser RichEditor, uvm.

2.) Performance zum jetzigen Zeitpunkt
Natürlich abhängig von der jeweiligen Operation die ausgeführt wird, liegt aber deutlich im > 0,02 Sekunden Bereich. Größter Knackpunkt war der Pullout des gesamten geparsten Templates per echo ... Dies hat gut und gerne um die 200ms gekostet. Hab jetzt Output Buffer aktiviert und mit ob_start und ob_flush diese Zeit auf etwa 2ms drücken können ...
Ein Lasttest mit Apache Bench ergab vor der Optimierung etwa 17 Requests pro Sekunde, jetzt dürfte der Wert bei etwa 30 liegen ...
Interessant wirds erst wenn wir die ca. 5000 Artikel und 1200 Kategorien aus unserem bisherigen Shopsystem übertragen haben ...

3.) Struktureller Aufbau
Es gibt eine Art Kernel welcher die gesamte Ein- und Ausgabelogik steuert ... Dieser dient praktisch als Gateway für alle Userinputs...
Im wesentlichen werden dort alle Klassen instanziert, die Variablen auf Plausibilität und eventuelle Attacken untersucht und das jeweils gerade benötigte Template geparst ...

Der Ablauf ist so
[User Inputs verwalten]
[Klassen inkludieren]
[Klassen instanzieren]
[Konfiguration laden]
[Pfade und andere Systemvariablen global in einer Hauptklasse setzen]
[Content Klasse instanzieren und mit Zeigern auf alle anderen Klassen ausstatten]
[User Inputs casten, welches Template wird benötigt]
[Ausgabe des geparsten Templates]

Jede Klasse wird nur einmal instanziert und stellt jeweils eine logische Abbildung eines Teils des Shops da, z.B. Warenkorb oder Systemfunktionen ... Verbunden werden die einzelnen Klassen durch eine übergeordnete Content-Klasse ...

Datenbankabfragen werden in der Regel zwischengespeichert (Je nach Beschaffenheit der Daten bis zu 30 Minuten aus dem Cache).

Das System ist so gestaltet, das der Endanwender jede gewünschte Funktion direkt über die Templates einbinden kann, wenn er also auf einer selbst gestalteten Seite eine Top 10 Liste der meistverkauften Artikel benötigt, führt er einfach an beliebiger Stelle im Template einen Funktionsaufruf durch {fetch_toplist}
Das System führt dann im Background die gewünschte Funktion aus und liefert die passenden Daten ans Template ... So ist man sehr flexibel was die Gestaltung der Templates angeht.

Natürlich können auch eigene Module an den Shop angebunden werden ...
(Entweder durch Extends der bestehenden Klassen oder durch Custom PHP-Skripte die man dem Shop "bekannt" macht und dann über _POST und _GET Parameter einbinden kann)

--------------------------------------------------------------
So nun noch einige Fragen:

1.) Wie kann ich feststellen wieviel Arbeitsspeicher das Script benötigt?
memory_get_usage() gibts ja erst unter PHP5.

2.) Gibt es noch andere Tools außer Apache Bench um die Performance zu testen?

3.) Wer hat Lust in ca. 2 Wochen an einem Betatest des Systems teilzunehmen? Neben einer Erwähnung der Betatester würde ich für wirklich hartnäckige Tester die auch auf Details achten das ein oder andere Produkt von www.coolsells.de springen lassen ...

4.) Danke an alle die bis hier gelesen haben

Gruß,

Stefan
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.04.2005, 11:24  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

1.) Ist halt so ne Sache, wenn der Kunde Appletts und alles aktiviert hat kann er das System ohne Probleme bedienen, aber stehen für die grundfunktionen Ersatz zur verfügung der auf JS, JAVA, Flash etc verzichtet?
2)
Du Schreibst wie du die Perfomance mit ob_start und so verbessert hast, vieleicht auch mal dran gedacht gewisse Teile der Seite komplett als html zu cachen? Oder ist sowas implemntiert ?


zu den Fragen:

1) www.php.net/memory_get_usage()
Zitat:
memory_get_usage() will only be defined if your PHP is compiled with the --enable-memory-limit configuration option. Und nur Unter *nix-Systemen, Also Windows fällt da schonmal raus zum testen.
und ist verfügbar ab php 4.3.2 und das sollte doch installiert sein :P
2) kennst du ja schon: http://httpd.apache.org/docs-2.0/programs/ab.html

3) schick mal ne pm was wie wo zu machen ist :P

4) gern geschehen.


mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 15.04.2005, 11:38  
Gast
 
Beiträge: n/a
Standard

Zu 1.)
Ja Ersatzfunktionen sind größtenteils aktiviert, allerdings ist das Backend ja auch eher für den kleineren Kreis an Benutzern -> Die sollten um das System mit allem Komfort nutzen zu können schon bereit sein sich die passenden Plugins zu installieren Sonst müssen sie halt mit Standard Dateiuploads etc. arbeiten

2.)
Ja, habe ich drüber nachgedacht ... Das Problem ist, das die wirklich rechenintensiven Sachen (Hauptsächlich Artikellisten) auch noch hoch dynamisch sein müssen, da ist z.B. die variable Sortierung die mir kopfschmerzen bereitet ... nutze eigentlich überall wo es nicht auf super aktuelle Daten ankommt die Ado Caching Funktionen ...

Fragen:
1.) Ups Und ich wundere mich warum er den Befehlt nicht kennt, habe ich wohl zu schnell geschlussfolgert ... Okay, happy new compiling ...

3.) Japp, ich melde mich - sobald es richtig was zum Testen gibt, ich hoffe es gibt hier auch ein paar Freaks, die sich freuen würden mein System zu hacken ... Versuch macht klug, SQL Injections etc. sollten nicht möglich sein, aber bei mittlerweile 15.000 Zeilen eigenen Code + Doppelt so viel Fremdcode kann eine Menge schief gehen

Jetzt habe ich doch noch eine Frage die wahrscheinlich ins Anfängerforum gehört, aber nach 20 Stunden ohne Schlaf (Jaja, Kaffee machts möglich) komme ich nicht auf die Lösung.

Also, die Artikellistung ist ja abhängig von der Kategorie, um jetzt die Seiten Zahlen zu bestimmen, muss ich ja feststellen wieviele Artikel es insgesamt in der jeweiligen Kategorie gibt ...

Vorher stand da ein unfeines SELECT * FROM und dann ein count($result)

Jetzt probiere ich gerade folgendes ... Jetzt gibt der mehr weiterhin ein Resultset mit allen Datensätzen zurück, beabsichtigt war nur eine Ergebniszeile wo im Feld Anzahl die Gesamtanzahl aller Datensätze steht ...

PHP-Code:
SELECT COUNT(a.id) AS ANZAHL FROM artikel_kategorien AS ak,artikel AS a,
        
artikel_hersteller AS ahartikel_sub AS asub
        WHERE ak
.kategorie_id=$curcat AND ak.artikelid=a.id
        
AND ah.id=a.hersteller AND asub.hauptid=a.id AND asub.art=AND a.aktiv_main=1
        GROUP BY a
.id 
Schande über mich, ...
  Mit Zitat antworten
Alt 15.04.2005, 11:46  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard Re: Shop - Technischer Background

Zitat:
Zitat von mcneilxp
2.) Gibt es noch andere Tools außer Apache Bench um die Performance zu testen?
httperf
__________________
mod = master of disaster
Waq ist offline   Mit Zitat antworten
Alt 18.04.2005, 11:25  
Gast
 
Beiträge: n/a
Standard

ich kann mich hier nur anschließen und dir meine meinung zu deinem code und gesamtfunktionen geben. da ich selber am xt:commerce rumbastel (ich gehöre nicht zum entwicklerteam falls das jemand glaubt) weiß ich um die schwachstellen von solch aufwendigen shopsystemen.

Einfach ne Mail schreiben.

Gruß MasterNemo

MoDCoC = Master of Disaster Commander of Chaos
  Mit Zitat antworten
Alt 18.04.2005, 14:25  
Gast
 
Beiträge: n/a
Standard

Okay, habe am Wochenende mal den ersten Belastungstest gefahren und den Shop mit über 1000 Artikeln gefüllt. Ergebnisse sind zufriedenstellend.

Wir würdet ihr Userspezifische Anpassungen realisieren? Aus Wartungstechnischen Gründen möchte ich den Kern und die Hauptklassen des Shops ungerne für die verschiedenen Shops anpassen, auf der anderen Seite sollen sich aber auch komplexe neue Funktionen durch den Anwender selbst realisieren lassen ... meine Idee war das man Funktionen die häufig individualisiert werden müssen (Bestellmanagement, etc.) in eine eigene Klasse auslagert und diese aus dem Update-Stream (Jepp, der Shop soll fernwartbar sein) herausnimmt.
Weiterhin können natürlich auch eigene Module ans System angebunden werden (Also z.B. ein Tinten und Toner Berater oder spezielle Aktionsmodule) ...
Macht es Sinn hier eine Pluginschnittstelle zu definieren und falls ja, was sind hier gute Ansätze in Bezug auf das Design solch einer Schnittstelle?
Meine erste Idee war eine Standardklasse zu entwickeln die Referenzen zu den notwendigen anderen Klassen bereitstellt (Ein-/Ausgabelogik, Konfiguration, Datenbank etc.) ... diese Standardklasse wird dann per extends vom User angepasst und dem System durch einen Eintrag in der konfigurationstabelle bekannt gemacht, aufgerufen wird die Klasse dann durch den schon bestehenden Custom-Handler der sich direkt im "Kern" des Shops befindet ...
  Mit Zitat antworten
Antwort


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
seriöses Job-Angebot-> fertiges Screendesign, Shop + Admi AWBusiness Beitragsarchiv 0 27.04.2008 21:06
Shop Zergling-new Off-Topic Diskussionen 4 17.04.2008 17:19
Shop Service - wie umsetzen? greg PHP Tipps 2006 1 07.05.2006 14:55
Begrenzung von .gif/.Jpg body background Bruce HTML, Usability und Barrierefreiheit 2 02.03.2006 11:09
CSS background anno HTML, Usability und Barrierefreiheit 1 18.09.2005 02:28
link image als background AliceD HTML, Usability und Barrierefreiheit 4 31.08.2005 14:10
Shop bzw. Warenkorb - Framework El Barto Beitragsarchiv 7 27.01.2005 19:24
Shop in PHP PHP Tipps 2005 4 07.01.2005 23:09
background nicht mitscrollen HTML, Usability und Barrierefreiheit 9 12.11.2004 14:56
pHp Shop in Homepage einbinden !!! ABER WIE ??? PHP Tipps 2004 1 15.08.2004 19:23
erkennen ob ein User in einem Shop eingekauft hat. Filewalker PHP Tipps 2004 3 27.06.2004 20:38
shop im frame problem (ie vs mozilla??) PHP-Fortgeschrittene 1 15.06.2004 02:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
technischer background, technischen background in php, background shop, shop background, memory_get_usage php gute werte?

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:29 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.