php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 21.04.2011, 01:19  
Quu
Benutzer
 
Benutzerbild von Quu
 
Registriert seit: 01.04.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
Quu befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Reihenfolge und (Un)Abhängigkeit von Events

Hallo,

ich habe auf einer Website Events die sekundengenau berechnet werden. Soweit kein Problem. Dies geschieht indem vor jedem Seitenaufruf in der Datenbank geschaut wird ob Events anstehen und diese dann ggf. rückwirkend berechnet werden. Dass Events nicht 2x berechnet werden stelle ich sicher, indem ich in der Zeile des Events einen Status update und nur wenn mir PHP gesagt hat dass der Status sich geändert hat die Berechnung / das Event ausführe.
Jetzt das Problem: wie kann ich sicherstellen, bzw kann ich sicherstellen dass die Events halbwegs in der richtigen Reihenfolge ausgeführt werden. Weil ich frage mich was passieren würde wenn Event Nr 23 von Browser A angestossen wird und kurze zeit später von Browser B Event Nr 24 angestossen wird, welches vor NR 23 fertig wäre. Dann hätte ich das Problem, dass Event Nr 24 noch nichts von den Änderungen des Events 23 gehört hat und es so zu inkonsistenzen kommen könnte.

Mir fällt dafür keine sinvolle Lösung ein, ausser Abhängigkeiten für Events zu definieren, was jedoch bei sehr vielen Events performancetechnisch vermutlich nicht tragbar wäre.

Andere Ideen? Eine Frage an alle die sich durch den Text gequält haben
__________________
"Das Unendliche ist weit, vor allem gegen Ende" - Alphonse Allais
Quu ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.04.2011, 08:40  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.246
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Knappe Antwort: gar nicht. Das funktioniert alleine deswegen nicht, weil sich die Events, selbst wenn sie korrekt ankommen untereinander überholen können. Was machen die denn inhaltlich, welche Abhängigkeiten bilden sie zueinander? kannst du dafür sorgen, dass eventv24 weiss dass es von 23 abhängt, dass aber meinetwegen Event 22 egal ist? Dann bräuchtest nur ein kennzeichen wann 23 fertig ist und das dann prüfen. Schön ist aber eher ein externer Event Server
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 21.04.2011, 09:35  
Quu
Benutzer
 
Benutzerbild von Quu
 
Registriert seit: 01.04.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
Quu befindet sich auf einem aufstrebenden Ast
Standard

Wie gesagt, es ginge die Abhängigkeiten vorher zu definieren, aber das könnten durchaus Ketten von hundert Events werden die Verknüpft werden. Damit halte ich das Performancetechnisch nicht tragbar, ich will nicht bei jedem Event noch X Queries brauchen um die Abhängigkeiten zu definieren.
__________________
"Das Unendliche ist weit, vor allem gegen Ende" - Alphonse Allais
Quu ist offline   Mit Zitat antworten
Alt 21.04.2011, 09:39  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.246
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Entweder so oder ein externer Mechanismus, der als Event Server fungiert (meinetwegen per Cron). Mit all den Problemen dazu (Cron nur minütlich usw.) Das über die Aufrufe der Clients, die konkurrierend stattfinden können, die sich überholen können, abzubilden ist unmöglich, ums mal deutlich zu sagen. Du kannst lediglich das Event 24 blockieren bis 23 fertig ist. Das wars dann aber auch.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 21.04.2011, 09:51  
Quu
Benutzer
 
Benutzerbild von Quu
 
Registriert seit: 01.04.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
Quu befindet sich auf einem aufstrebenden Ast
Standard

Ein externer Event-Server wäre natürlich die Lösung der Probleme. Das Problem des Eventservers ist aber schon im Namen drin: Ich hb keinen Server, da ich mir unsicher war ob ich ihn absichern könnte. Ich hab nur Webspace. Und nur mit Webspace etwas permanent laufendes zu produzieren ist schwierig.
__________________
"Das Unendliche ist weit, vor allem gegen Ende" - Alphonse Allais
Quu ist offline   Mit Zitat antworten
Alt 21.04.2011, 09:55  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.246
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Nochmal: Es ist schlichtweg unmöglich. Sowas sollte man gar nicht erst probieren. Zumindest wenn die Möglichkeit, alle Folgeevents zu blockieren, nicht in Frage kommt. Du musst aus Parallel Zugriffen, die noch dazu zufällig passieren können, eine sequentielle Verarbeitung bauen. Und das geht nicht, wenn du weder die Abhängigkeiten definieren willst noch eine pauschale Blockade in Frage kommt.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 21.04.2011, 10:11  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.563
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

möglicherweise mach ich es mir jetzt zu einfach - aber reicht es nicht zum Zeitpunkt X -> wo ein Request vom Browser kommt, alle Events abzufragen, ob sie vor Zeitpunkt X begonnen haben und NOCH NICHT beendet sind -> dass sind dann eben Event 23 und Event 24, unabhängig von einander, keine Abhängigkeiten außer die Anfangszeit ... mithin genau was du möchtest - damit musst du dir nicht mal "merken" , ob ein Event schon angezeigt wird ... nur deine Berechnungen musst du dann von der Event-Anzeige entkoppeln .. sonst würdest du die ja bei jedem Request innerhalb der Dauer eines Events machen und damit öfter ...
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 21.04.2011, 10:20  
Quu
Benutzer
 
Benutzerbild von Quu
 
Registriert seit: 01.04.2011
Beiträge: 32
PHP-Kenntnisse:
Fortgeschritten
Quu befindet sich auf einem aufstrebenden Ast
Standard

@eagle
wenn ich deinen Post richtig verstehe gehst du davon aus, dass Event 23 und 24 unabhängig sind. Dem ist aber nicht so, Event 24 soll erst stattfinden wenn die Änderungen v Event 23 in der DB sind.

Edit: Wie wahrscheinlich dürften solche überlappenden Ereignisse überhaupt sein? Wenn man von kurzen, millisekunden lang dauernden Berechnungen und von tausenden Events pro Tag ausgeht? Ich weiss dass man darauf nicht mit 0,042 % antworten kann, aber mich interessiert eher sowas wie passiert stündlich/täglich/wöchentlich/ du kannst froh sein wenn ud es einaml erlebst
__________________
"Das Unendliche ist weit, vor allem gegen Ende" - Alphonse Allais

Geändert von Quu (21.04.2011 um 10:27 Uhr).
Quu ist offline   Mit Zitat antworten
Alt 21.04.2011, 10:32  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Race Conditions sind nicht so selten wie du vlt. denkst. Und wenn sie einmal vorkommen sind deine Daten nicht mehr konsistent und dann hast du möglicherweise ein Problem. Und 0.042% (nur als Beispiel) ist wirklich nicht viel, da brauchst du nur 2500 Events am Tag und schon hast du inkonsistente Daten.
Flor1an ist offline   Mit Zitat antworten
Alt 21.04.2011, 11:08  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von Quu Beitrag anzeigen
Jetzt das Problem: wie kann ich sicherstellen, bzw kann ich sicherstellen dass die Events halbwegs in der richtigen Reihenfolge ausgeführt werden.
Diese Aussage widerspricht dem Eventgedanken (asynchron). Ein Ereignis tritt ein, wenn es eintritt, nur die Abarbeitung der Ereignisse kann man in eine Reihenfolge bringen.

Zitat:
Zitat von Quu Beitrag anzeigen
Weil ich frage mich was passieren würde wenn Event Nr 23 von Browser A angestossen wird und kurze zeit später von Browser B Event Nr 24 angestossen wird, welches vor NR 23 fertig wäre. Dann hätte ich das Problem, dass Event Nr 24 noch nichts von den Änderungen des Events 23 gehört hat und es so zu inkonsistenzen kommen könnte.
Die Inkonsistenz kommt erst, wenn du (dein Serverprogramm) falsch reagiert. Der beschriebene Fall ist erstmal nur ein Konflikt, der behandelt werden muss. Dein gewünschter "Eventserver" wäre der Schiedsrichter, der dann entscheiden muss, ob ein Konflikt vorliegt und wie er gelöst wird. Er kann sie nicht verhindern, er kann nur Sorge tragen, das eine Lösungsstrategie angewendet wird.

Vergleichbar:
http://de.wikipedia.org/wiki/Scheduler_%28Datenbank%29

Zitat:
Dem ist aber nicht so, Event 24 soll erst stattfinden wenn die Änderungen v Event 23 in der DB sind.
Und wenn Event 23 nie eintritt?
Nochmal: du kannst Events nicht auf diese Weise steuern, oder Erwartungen stellen ala "Event 24 soll erst stattfinden, wenn ...". Ereignisse passieren wann sie wollen (meist ausgelöst durch Benutzeraktionen).
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   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
[Erledigt] jquery fullcalendar events nach oben verschieben Thorus JavaScript, Ajax und mehr 2 24.01.2011 11:38
Scriptsuche Anmeldetool für Events JK_89 Scriptbörse 1 23.12.2010 13:03
MySQL Events automatisch starten Todeshügel Datenbanken 2 10.11.2010 17:40
Select Feld: Reihenfolge ändern und auswerten monk JavaScript, Ajax und mehr 3 17.02.2010 20:05
Reihenfolge der Tabellen-Spalten durch User wählbar? RoDa PHP Tipps 2006 4 18.06.2006 16:40
Falsche Reihenfolge Chrescht PHP Tipps 2006 7 26.01.2006 18:15
[Erledigt] Daten aus MySQL in einer zufälligen Reihenfolge ausgeben PHP-Fortgeschrittene 2 31.07.2005 12:42
[Brainstorming] Userdefinierte Reihenfolge PHP Tipps 2005-2 14 06.07.2005 18:31
sortierverfahren mit selbst festgelegter reihenfolge PHP Tipps 2004-2 2 18.12.2004 03:04
templates werden in der falschen reihenfolge angezeigt PHP-Fortgeschrittene 5 29.10.2004 04:16
template blöcke werden in falscher Reihenfolge angezeigt PHP Tipps 2004 4 28.10.2004 16:42
template blöcke werden in falscher reihenfolge angezeigt! PHP Tipps 2004 0 26.10.2004 17:39
[Erledigt] Bestimmte Zahlen in zufälliger Reihenfolge ausgeben PHP Tipps 2004 12 15.09.2004 20:04
[Erledigt] Reihenfolge des Resultset bei Verwendung von ..WHERE a IN () Datenbanken 3 29.07.2004 16:02
post reihenfolge im apboard ew2 (v2.02) PHP Tipps 2004 2 01.07.2004 09:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jquery folgeevents blockieren, reihenfolge abhängigkeit, jquery events falsche reihenfolge, java events in falscher reihenfolge, abhängigkeit reihenfolge

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