php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-04-2010, 19:36
chrissi11
 Registrierter Benutzer
Links : Onlinestatus : chrissi11 ist offline
Registriert seit: Jan 2008
Beiträge: 70
chrissi11 ist zur Zeit noch ein unbeschriebenes Blatt
Standard performance

hi liebe leute,

ich mal wieder..diesmal hab ich ein anderes anliegen.
weiß garnicht so recht ob die rubrik hier richtig ist..naja..

da hab ich mal wieder ne mehr oder weniger gute idee..
für meine community wollte ich so eine art helpguide machen.
so wie man sie bei knuddels in etwa kennt.

nach gewissen erfahrungspunkten, bestimmten aktivitäten will ich so ein
hilfeguide aufrufen lassen.

da aber hierfür immer ein read/write benötigt wird stellt sich mir die frage ob
das nicht die datenbank sprengen könnte.

ich hätte jetzt zum beispiel folgende idee

eine tabelle mit folgenden inhalt:

1.)
firstlogin = 0
messagefirst = 0
profileviewfirst = 0
usw halt..

2.)
wenn punkt zwischen x und x dann folgender tipp usw..

jetzt wird ja ständig gelesen ob der user beispielsweise zum ersten mal eingeloggt ist oder nicht.
das gleiche immer wieder dann wenn er eine nachricht schreiben will.
genauso wie wenn er ein profil aufruft usw..

hier stellt sich mir die frage, da ich bei den first aufrufen den wert auf 1 setzen muss um diesen speziellen punkt auszuschließen ob sich das nicht auf die performance bemerkbar macht. gehen wir mal von 10000 aktiven usern aus, nru so als beispiel..oder mehr sogar.. dann liege ich rechnerisch bei 3 optionen bei 3x 10000 = 30000 einträge allein nur für die überprüfungen..

dan habe ich eine tabelle die an die denk ich mal gigabyte groß werden wird, oder irre ich mich?

gibt es vielleicht andere alternativen? wäre jetzt so erstmal mein gedanke gewesen das so umzusetzen..

viele grüße

Geändert von chrissi11 (29-04-2010 um 19:38 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 29-04-2010, 19:50
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

ich bin nicht sicher, ob ich alles zu 100% verstanden habe, aber alle Prüfungen musst du nicht noch einmal machen. Du kannst ja einige Daten in der Session ablegen.

Davon abgesehen kann man viele Prüfungen in einer Abfrage mit Joins und entsprechenden Where-Klauseln zusammenfassen. Die Abfrage braucht dann nur unwesentlich länger, aber dafür machst du nur einen Round-Trip zum DBMS statt mehrerer.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 29-04-2010, 19:59
chrissi11
 Registrierter Benutzer
Links : Onlinestatus : chrissi11 ist offline
Registriert seit: Jan 2008
Beiträge: 70
chrissi11 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi, danke für die antwort.

aber wieso soll ich das in einer session speichern?
sessions haben doch keine unendliche lebensdauer!?
beim nächsten login fängt das ganze dann ja von vorne an.
Mit Zitat antworten
  #4 (permalink)  
Alt 29-04-2010, 20:09
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von chrissi11 Beitrag anzeigen
beim nächsten login fängt das ganze dann ja von vorne an.
Das ist klar, aber wenigstens machst du es nur beim Login und nicht bei jedem einzelnen Aufruf innerhalb einer Sitzung.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 29-04-2010, 20:22
chrissi11
 Registrierter Benutzer
Links : Onlinestatus : chrissi11 ist offline
Registriert seit: Jan 2008
Beiträge: 70
chrissi11 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, aber wie schließe ich dann in der nächsen sitzung ein ob der user z.b das erste mal auf der nachrichten seite ist? ohne in die db zu schaun?!

weißt du was ich meine?

achsoooo..jetzt weiß ich was du meinst..

du meinst also einmal alle daten auslesen und ab in sessions damit..?!
Mit Zitat antworten
  #6 (permalink)  
Alt 29-04-2010, 20:23
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Kannst du nicht. Das sind persistente Daten, für die du in die DB schauen musst und das ist auch gar nicht schlimm. Wofür hättest du denn sonst eine DB, wenn du sie nie benutzt?

Edit zu deinem Edit: Genau, beim Login die komplexen und transienten Daten (nicht wirklich alles) in der Session halten und verwalten. Daten, die aber dauerhaft gespeichert werden sollen, sofort in die DB schreiben. Da kommt es jetzt natürlich auf den konkreten Anwendungsfall an, wann was davon Sinn macht.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (29-04-2010 um 20:32 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 29-04-2010, 20:33
chrissi11
 Registrierter Benutzer
Links : Onlinestatus : chrissi11 ist offline
Registriert seit: Jan 2008
Beiträge: 70
chrissi11 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja ok, das ist dann soweit klar..
aber, da sind wirklich viele dieser einstellungen die verwaltet werden müssten.
wenn es ca so an die 100 tipps sind, dann liege ich da jeweils bei 100 verschiedenen einstellungen.. und das mal nur auf 10 user betrachtet ist das eine enorme datenmenge die im laufe der zeit zusammenkommt..weil pro user sinds ja dann schließlich 100 einträge..

macht das wirklich sinn? oder gibts da keine bessere lösung? ich will mir ned unbedingt nen extra server mit 10 x 10 terrabyte nur für diese sache zulegen um es mal zu übertreiben..aber ich komm schon auf eine große datenmenge oder nicht?
Mit Zitat antworten
  #8 (permalink)  
Alt 29-04-2010, 20:44
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Das klingt, als wäre das nicht wirklich sinnvoll normalisiert. Diese 100 Tipps liegen in einer DB-Tabelle und die 10 User in einer anderen. Eine dritte Tabelle verwaltet die Zuordnungen. Wenn jedem der User alle Tipps zugeordnet sind (worst case), sind das zwar 1000 Datensätze in dieser dritten (Zuordnungs- oder n:m-Relation), aber da stehen dann nur Zahlen drin, also brauchst du keinen Terrabyte-Server.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #9 (permalink)  
Alt 30-04-2010, 00:36
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Genügt nicht auch ein Bitfeld in der Usertabelle?
Mit Zitat antworten
  #10 (permalink)  
Alt 30-04-2010, 00:51
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Genügt nicht auch ein Bitfeld in der Usertabelle?
100bit Breite? Das passt ja nicht einmal in bigint unsigned rein und ein varchar-Feld dafür wäre auch Blödsinn. Dazu kommt, dass es nicht vernünftig erweiterbar ist. Mit Normalisierung hätte das dann nichts zu tun.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #11 (permalink)  
Alt 30-04-2010, 01:45
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Warum denn nicht mit varchar?

User loggt sich ein, Bitfeld wird aus der Usertabelle in die Session geladen.
Applikation will wissen, ob User sich zum ersten Mal einloggt: Steht firstlogin Bit im Bitfeld auf 0, ist es der erste Login. Ganz ohne Query!
Bit für firstlogin wird auf 1 gesetzt und entweder direkt in die Usertabelle zurück geschrieben oder beim Session-Destroy.

In der Applikation muss es für jede Aktion eine Konstante geben, die auf die zugehörige Position im Bitfeld zeigt. Das ist erweiterbar und eine sinnvolle Abweichung von der Normalisierung nach Lehrbuch.
Dass die Applikation irgendeine Zuordnung enthält, lässt sich nicht vermeiden. Entweder sind es Bitfeldpositionen oder IDs in einer Tabelle. Das nimmt sich nichts.

Geändert von onemorenerd (30-04-2010 um 01:51 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 30-04-2010, 01:51
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Warum denn nicht mit varchar?
In diesem Fall ja, aber ich dachte, es geht um die Tipps. Dahingehend ist mir die ganze Anfrage nicht vollends klar geworden.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #13 (permalink)  
Alt 30-04-2010, 08:24
chrissi11
 Registrierter Benutzer
Links : Onlinestatus : chrissi11 ist offline
Registriert seit: Jan 2008
Beiträge: 70
chrissi11 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja, es geht ja auch um die fragen..so wie du beschrieben hast mit dem tabellenaufbau hatte ich es auch vor, davon mal abgesehn.
mir gehts ja nur um die 1 und die nullen.so ganze fragen werden da nicht reinkommen. das handle ich dann mit smarty aus.
gut, ich werde es mal so probieren und berichten wie groß die tabelle nach einem monat ist. probieren geht über studieren.

danke euch fürs mitdenken

achso..das feld werd ich mit binäry belegen? oder werden da bytes statt bits gespeichert?
Mit Zitat antworten
  #14 (permalink)  
Alt 30-04-2010, 11:43
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Welche Fragen? Welches Feld? Beschreibe deine Gedanken halbwegs nachvollziehbar!
Mit Zitat antworten
  #15 (permalink)  
Alt 30-04-2010, 11:43
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

@onemorenerd

obwohl ich eine Schwäche für derartige Vorgehensweisen(*) habe muss ich sagen, dass im hier gezeigten Fall ganz klar die Vorteile der klassischen "Lehre" überwiegen. Weiß man heute wirklich ob es bei 100 Tipps bleibt? Was ist wenn die Anzahl der Tipps irgendwann die Möglichkeiten von VarChar übersteigt? Zusätzliches VarChar? Dann muss wieder der Code angepasst werden. Einfach sauber normalisieren und muss keine Gedanken mehr daran verschwenden was in 5 Jahren ist.

*)
Die logischste Umsetzung dieser Vorgehensweise stellt in meinen Augen ein SET-Feld dar, da ich damit auch mal bequem mit FIND_IN_SET abfragen kann und mich nicht um Sachen wie z.B. korrekte Position des gesuchten Bits kümmern muss, 255 Kombinationsmöglichkeiten hat man damit ebenso, ich kann die Bits sozusagen "frei benennen" und weniger Speicher braucht es auch (max. 8 Byte vs. max. 256 Byte bei VarChar).
In meinen Augen spricht da nichts dafür sich mit VarChar das Leben schwer zu machen.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

Geändert von Quetschi (30-04-2010 um 11:48 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[OOP] MVC und Performance kaguya PHP Developer Forum 13 31-01-2008 09:26
NOT IN performance sLiMeR²³ SQL / Datenbanken 4 09-12-2007 10:46
Performance php/sql zerni BRAINSTORMING PHP/SQL/HTML/JS/CSS 3 10-12-2006 15:20
php Performance Dreamdancer BRAINSTORMING PHP/SQL/HTML/JS/CSS 8 10-09-2004 15:48
Performance?? Dreamdancer BRAINSTORMING PHP/SQL/HTML/JS/CSS 10 04-09-2004 14:39

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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