Seite 1 von 1
Event Loop?
Verfasst: 27. Januar 2011 21:13
von crossfader
Hi!
Jetzt stelle ich schon wieder eine Frage hier.. bitte nicht böse sein
Und zwar programmiere bzw. versuche ich gerade ein Programm zu programmieren, welches über eine PHP Api (xml) gefüttert wird - das hat mir das Handling mit der MySQL DB etwas erleichtert
Zu meiner Frage: Ich habe keine Lust, dass ich bei 40 Abfragen nochmal 40 slots habe, die die Abfrage auswerten.
Onkel Google hat mir was von einem Event Loop erzählt, die Doku habe ich mir auch schon agesehen, bin aber nicht wirklich schlauer. Gibt es irgentwo ein Beispiel, oder ist jemand so gnädig und würde mir eben eins tippen? Für die Bemerkungen: Ich will kein fertiges Programm, lediglich die Anwendung von einem Event Loop!
Gruß,
Olli
Verfasst: 27. Januar 2011 22:19
von franzf
Das ist jetzt etwas wirr... Ist das ein PHP-Programm? Oder eines in Qt? Oder QT mit den PHP-Bindings?
Und wie kommst du darauf, dass dir eine Event-Loop 40 SLOTS für deine 40 Abfragen erspart?
Prinzipiell ist eine Event-Loop eine große Endlosschleife, die einkommende Events abfängt und verarbeitet. Wenn du also für das Ereignis "neue Abfrage" in deiner Eventloop einen Handler installieren willst, musst du für jede Abfrage, die eine eigene Verarbeitung verlangt, einen eigenen Handler installieren.
Wie sieht denn dein bisheriger Ansatz aus?
Verfasst: 28. Januar 2011 15:30
von crossfader
Hi!
Danke erst einmal für die Antwort, ich versuche mich noch einmal deutlicher auszudrücken:
Ich bin gerade dabei eine Projektverwaltung zu schreiben. Da ich mich aber mit dem kompilieren von MySQL Treibern etwas (sehr) schwer getan habe, und PHP sehr gut beherrsche habe ich mir gedacht: PHP Api
Die PHP Api liefert entweder 0 oder 1 zurück, oder wenn ich Daten brauche eben ein XML Schema.
Hier meine Abfrage in C++/Qt:
Code: Alles auswählen
QString apiUrl = this->url+"checkForUpdates/version/"+this->version;
QNetworkRequest *req = new QNetworkRequest(QUrl(apiUrl));
this->reply = man->get(*req);
connect(
this->reply,SIGNAL(finished()),
this,SLOT(validateUpdateResult()));
Damit ich auf im slot auf den QNetworkReply zugreifen kann, habe ich das einfach in das Objekt gepackt
Ich habe mir schon xml-rpc angesehen, habe aber keine wirklichen Vorteile gegenüber meiner "einfachen GET-API" gesehen..
Ich bin mir nur nicht ganz sicher, ob es nicht etwas unsauber bzw. unschön ist, wenn ich für jede Abfrage (das werden noch ein paar mehr) 2 Funktionen (Aufruf und slot) erstelle.
Gruß,
Olli
Verfasst: 28. Januar 2011 20:54
von solarix
crossfader hat geschrieben:...
Ich bin gerade dabei eine Projektverwaltung zu schreiben. Da ich mich aber mit dem kompilieren von MySQL Treibern etwas (sehr) schwer getan habe, und PHP sehr gut beherrsche habe ich mir gedacht: PHP Api

...
Ich bin so verblüfft, dass ich nochmals nachfragen muss: du verwendest PHP nur, weil du das MySQL-Plugin nicht hingekriegt hast?
Sorry wenn ich nicht auf deine Frage eingehe: aber solltest du uns dann nicht besser mitteilen, wo genau du beim Erstellen des Plugins steckengeblieben bist?
Verfasst: 28. Januar 2011 22:30
von crossfader
Hi!
Nein, es ist nicht nur der Grund, es gab einfach ein paar Dinge, die vorteilhaft an der API waren:
1. Wenn ich die Software zum Download anbieten sollte, dann muss jeder, der einen eigenen "Server" haben möchte, eine Datenbank haben, welche externen Zugriff erlaubt.
2. Ich kann die API auch für andere Zwecke nutzen
3. Es ersparte mir Arbeit bei dem MySQL Plugin *g*
Ich habe ein Tutorial gefunden, was mir aber irgentwie die ganze Qt Installation durcheinander gebracht hat: Um es kurz zu fassen: mingw installieren, qt creator installieren, qt quelldateien herunterladen, mysql treiber irgentwie komplieren und sonst wo reinladen..
Ich will doch nur eine Verbindung zur Datenbank
Um es kurz zu sagen: Ich will einfach eine verdammte Verbindung zur Datenbank, wenn es ohne PHP API ohne große Umstände geht, dann wäre es natürlich am Besten.
Verfasst: 31. Januar 2011 11:26
von RHBaum
Dann hasst du die Wahl zwischen:
1. Um das Datenbankproblem herum zu programmieren
oder
2. Dich Hinsetzen und zeit und Gehirnschmalz zu investieren um das DB-Plugin Problem hinzubekommen.
Aufwandabschaetzung:
1. ist abhaengig davon, welche features du von der DB verwendest und wie komplex das ganze wird ...
2. ist fix, kommt drauf an wie "geschickt" dich anstellst
sonstiges:
bei 1. lernst bestimmt lustige Technicken und erweiterst deinen Horizont um komplett fremde themen (PHP-Api) die vielleicht anderweitig mal verwenden könntest.
bei 2. du lernst grundlagen vom kompilieren und linken externer bibliotheken, die weit ueber simple todo anleitungen folgen hinausgehen ... Du lernst linker und compiler-errors zu verstehen und entsprechende Fehler / abhaengigkeiten zu eliminieren und verstehen. Das wird dich bei der Programmierung immer und immer wieder begleiten.
Tja zu was sollen wir Dir nur raten ...
Ciao ...
Verfasst: 1. Februar 2011 14:26
von crossfader
Wahrscheinlich 1
Na, dann werde ich es jetzt ein 3. mal versuchen, ansonsten werd ich halt eine Klasse schreiben, die mir die ganzen API Abfragen erleichtert..
Danke auf jeden Fall!
Gruß,
Olli