Zurück   Flashforum > Flash und Server > Flash Remoting

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-05-2006, 10:04   #1 (permalink)
OOP Addict
 
Benutzerbild von log2e
 
Registriert seit: Mar 2004
Beiträge: 26
Thumbs up Tipp: AMFPHP - Kaskadierende Datenbankzugriffe

Folgende Methode hat sich bei mir in der Praxis bewährt: Sollte es bei vielen gleichzeitig abgeschickten Datenbankzugriffen Probleme mit AMFPHP geben (z.B. dass keine Werte zurückgegeben werden), empfiehlt es sich, die Datenbanzugriffe zu "kaskadieren". Also, man vermeide parallele Zugriffe wie hier (ActionScript-Code nur verkürzt dargestellt):

Code:
private function getDBRecords1(): Void { 
   var pc:PendingCall = MyService.getDBRecords1();  
   pc.responder = new RelayResponder(this, "getDBRecords1_Success", "getDBRecords1_Fault");  
} 
 
private function getDBRecords2(): Void { 
   var pc:PendingCall = MyService.getDBRecords2();  
   pc.responder = new RelayResponder(this, "getDBRecords2_Success", "getDBRecords2_Fault");  
} 
 
private function getDBRecords3(): Void { 
   var pc:PendingCall = MyService.getDBRecords3();  
   pc.responder = new RelayResponder(this, "getDBRecords3_Success", "getDBRecords3_Fault");  
} 


getDBRecords1();
getDBRecords2();
getDBRecords3();
Stattdessen sollte man die Rückmeldung des ersten Zugriffs abwarten, dann den zweiten starten, wieder auf das Ergebnis warten, dann den dritten starten usw. Also etwa so (wiederum nur verkürzt dargestellt):


Code:
private function getDBRecords1(): Void { 
   var pc:PendingCall = MyService.getDBRecords1();  
   pc.responder = new RelayResponder(this, "getDBRecords1_Success", "getDBRecords1_Fault");  
} 
 
getDBRecords1_Success(re:ResultEvent):Void { 
   // do something with re.result 
   getDBRecords2(); 
} 
 
... 
 
getDBRecords2_Success(re:ResultEvent):Void { 
   // do something with re.result 
   getDBRecords3(); 
} 

...

getDBRecords3_Success(re:ResultEvent):Void { 
   // do something with re.result and continue with your application
}
__________________
www.log2e.com | blog.log2e.com
Everybody else is just green.

Geändert von log2e (03-05-2006 um 10:13 Uhr)
log2e ist offline   Mit Zitat antworten
Alt 08-05-2006, 06:05   #2 (permalink)
x39
 
Benutzerbild von georgem
 
Registriert seit: Oct 2004
Ort: St.Gallen, Schweiz
Beiträge: 1.261
Danke, das ist eine logische und gute Idee...

ich kanns zwar nicht testen, müsste mal einen onlineDienst aufsetzen wo auch wirklich 1000e Leute gleichzeitig zugreifen...

Aber der Vorschlag macht absolut Sinn.
__________________
The Sleeper Must Awaken

www.margaris.de | www.exosolar.net
georgem ist offline   Mit Zitat antworten
Alt 08-05-2006, 08:40   #3 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
es geht nicht um 1000 leute sondern um gleichzeitige zugriffe eines users, das haste falsch verstanden.

gruß maddin
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 08-05-2006, 09:16   #4 (permalink)
OOP Addict
 
Benutzerbild von log2e
 
Registriert seit: Mar 2004
Beiträge: 26
Zitat:
Zitat von madflanderz
es geht nicht um 1000 leute sondern um gleichzeitige zugriffe eines users, das haste falsch verstanden.
Sorry, da habe ich mich wohl etwas unklar ausgedrückt: madflanderz hat Recht, es geht um die generelle Optimierung der Datenbankzugriffe, was sich bereits bei einem einzelnen Nutzer auswirkt.

Ein Beispiel wären etwa mehrere ComboBox-Komponenten auf einer Formular-Seite, die allesamt dynamisch gefüllt werden und deren Inhalte aus verschiedenen Datenbank-Tabellen kommen. Anstatt alle AMFPHP-Calls gleichzeitig abzusenden, kann es sinnvoll sein, die Pulldown-Menüs eins nach dem anderen zu füllen.
__________________
www.log2e.com | blog.log2e.com
Everybody else is just green.
log2e ist offline   Mit Zitat antworten
Alt 16-01-2007, 05:12   #5 (permalink)
x39
 
Benutzerbild von georgem
 
Registriert seit: Oct 2004
Ort: St.Gallen, Schweiz
Beiträge: 1.261
yep, jetzt ein halbes Jahr später hab ich genau diese Methode angewendet, und es klappt ganz gut.

Du machst ja nichts anderes als die jeweiligen Funktionsaufrufe ineinander zu verschachteln, um parallelität zu umgehen.
__________________
The Sleeper Must Awaken

www.margaris.de | www.exosolar.net
georgem ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

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 sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele