Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

07.10.2016, 16:58

Also XAMPP würde ich aus Sicherheitsgründen nie so direkt benutzen - wie sie selbst auf ihre Webseite schreiben, ist es eher für den Test Betrieb gedacht gewesen.
Task Manager hört sich stark nach Windows an...
Nutzt du eig. einen Linux Server?

90 Anfragen / Sekunde sollten weder für den Apache, noch für PHP nen Problem darstellen, auch für die MySQL Datenbank nicht, genauso wenig wie 1.000 Anfragen / Sekunde.
Sollte es zu Lastspitzen kommen, liegt das vermutlich einfach daran, dass MySQL oder Apache2 nicht richtig konfiguriert sind.
Wenn z.B. in der MySQL Config steht, dass MySQL nur 100MB des RAMs nutzen darf, bringt es dir gar nichts, den Server zu upgraden, weil der danach immer noch nur 100MB nutzt.
Hier solltest du also evtl. die Konfiguration so anpassen, dass z.B. MySQL mehr Daten im RAM halten darf und somit nicht so oft von der Festplatte lesen muss (File I/O ist sehr teuer was Performance angeht).
Außerdem wäre eine SSD vom Vorteil.

Sollte auch dies nichts helfen, lautet die Lösung für dein Problem Caching und Load Balancing.

Außerdem solltest du überlegen, ob du wirklich HTTP für deine Abfragen nutzen willst.
HTTP ist sehr lahm. Außerdem könntest du selbst mit PHP Sockets öffnen, um den Client zu informieren, wenn es eine Änderung gibt.
Oder du setzt gleich auf Socket.io, siehe auch http://webkrauts.de/artikel/2012/client-…on-mit-socketio.

Wenn du auch andere Programmiersprachen beherrscht, wäre es sogar eine Überlegung wert, gleich auf TCP Sockets zu setzen und einen eigenen Server zu programmieren.
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

12

09.10.2016, 10:10

Danke das sind sehr viele hilfreiche Tipps und wichtige Informationen.

13

13.10.2016, 15:56

Hallo, ich habe mir ueberlegt das ich mein Signalkopierprogramm gerne mit Socket.io bauen will, um es besser zu machen, aber ich weis noch nciht ob das funktionieren wird und wollte euch deswegen gerne mein aktuelles Signalkopierprogramm genauer erklaeren, wenn jemand mir sagen kann ob man das mit Socket.io auch bauen kann waere cool.

Das Hauptprogramm zwischen den der Datenaustausch stattfindet heist Metatrader http://www.metatrader4.com/ es wird benutzt fuer Devisenmarkthandel.

Das Signalkopierprogramm ist dazu gedacht mehrere Metatrader die Moeglichkeit zu bieten Handelssignale von einem Haupthaendler kopieren zu koennen.

Beim Metatrader gibt es die Moeglichkeit Handelsprogramme zu bauen, diese Programme kann man mit Applikationen vergleichen, mit denen man irgendwelche Aufgaben nach Wunsch automatisieren kann, beim Metatrader werden diese Zusatzprogramme Expert Advisor genannt und es wird eine Programmiersprache benutzt die MQL4 heist, diese Programmiersprache ist sehr aehnlich wie C++ und PHP und ich kenne mich auch schon mit MQL4 ganz gut aus.

Bei meinem Signalkopierprogramm habe ich die Kommunikation zwischen Mysql Datenbank und Metatrader ueber eine PHP Seite aufgebaut. Weil die Expert Advisor Programme vom Metatrader in der Lage sind eine Internetseite auf zu rufen und die Rueckgabe, also den Quellcode der INternetseite ab zu speichern und aus zu lesen.

Auf die Weise funktioniert der Datenaustausch, der Metatrader ruft die PHP Seite auf und die PHP Seite schaut in der Mysql Datenbank nach und schreibt die neuen Handelssignale in den Quellcode der Seite und der Metatrader gibt den Quellcode der PHP Seite zurueck und dort stehen dann alle Handelssignale.

Wenn der Haupthaendler ein neues Handelssignal hat, dann schreibt sein Metatrader wiederum diese neuen Daten auf die gleiche Weise ueber eine PHP Seite in die Mysql Datenbank.

Der Aufruf dieser PHP Seiten durch den Metatarder ist so geregelt das es pro Sekunde 1 - 5 mal vorkommen kann, steuern kann ich die Haeufigkeit der Aufrufe nicht, weil es passiert immer dann wenn ein neuer Kurs fuer ein Devisenhandelspaar erscheint, je nach Marktlage kann es vorkommen das pro Sekunde 2 - 3 verschiedene neue Kurse empfangen werden und manchmal auch 1 Sekunde lang kein neuer Kurs emfpangen wird, wenn nicht viel los ist im Markt.

Ich weis jetzt nicht genau wie ich das mit Socket.io verbessern kann, aber die schreiben auf Ihrer Webseite das vieles moeglichist damit, kann mir jemand Tipps geben?

14

16.10.2016, 12:08

Du nutzt also eine Rest Api, mit der du die Daten abrufst.

Um Socket.IO nutzen zu können, benötigst du einen Socket.IO Client für deine Programmiersprache (es sei denn, du willst diesen selbst schreiben).
Da MQL4 keine allzu bekannte Programmiersprache ist, weiß ich nicht, ob es dafür einen Socket.IO Client gibt.
Alternativ könntest du auch einen JS Parser / Interpreter / Compiler o.ä. mit dem JS Client für Socket.IO verwenden, um Socket.IO verwenden zu können.
Einige Libraries, auch einige in Java, setzen auf diese Methode, allerdings ist dies nicht ganz so performant, wie wenn er in der selben Programmiersprache geschrieben wäre bzw. binär vorliegt.
Ich vermute aber mal, dass es bei dir auf 10ms mehr nicht drauf ankommt.

Ob und wie du das lösen kannst, weiß ich leider nicht, da ich MQL4 ehrlich gesagt nicht kenne.
Vllt. findest du ja einen Weg oder du bleibst vorerst bei deiner Rest Api mit HTTP Requests.
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

15

16.10.2016, 19:58

Hallo, ich habe das auch schon gedacht das der Metatrader ja kein Browser ist und es deswegen bestimmt nicht so einfach moeglich ist Socket.IO zu benutzen.

Vielleicht muss ich dann doch bei dieser derzeitigen Loesung bleiben und wenn es mehr Leute werden die den Signalservice benutzen und der Server mehr Power benotigt muss ich mehr CPU und RAM fuer den Server kaufen.

Ich habe aber auch einmal gehoert das man sowas wie Pips benutzen koennte, hier ist eine info seite dazu: https://www.mql5.com/en/articles/503

Ich habe mich aber an sowas noch nicht ran gewagt weil das schon etwas komplizierter aussieht vor allen weil ich bisher kaum objekorientiert programmiere also ohne Klassen und Methoden. Aber vielleicht waere das auch wieder eine Verbesserung von meinem Signalservice Programm wenn ich das so ueber Pips baue.

16

16.10.2016, 20:24

Ehrlich gesagt sieht Pips auf den ersten Blick nicht so aus, als wäre es das, was du haben willst.
Das ist quasi nur ne einfache (und anscheinend auch noch synchrone) Library, um Sockets zu erstellen.
Was du aber bei Socket.IO haben willst, ist das Event-Driven Design, also dass du Events verschickst und nicht einfach Nachrichten.
Natürlich kann man das alles auch selber bauen, aber wenn die Api schon synchron ist, wirds auch nicht unbedingt performanter, vorallem nicht auf Server Seite.
Vllt. ist die Api aber auch asynchron und ich habe das jetzt nur überlesen. Keine Garantie auf Richtigkeit!
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

17

16.10.2016, 20:50

Ich kenne mich auch nicht so gut aus, bei meiner Loesung die ich jetzt habe denke ich nur manchmal ob es nicht zu viel ist wenn der Metatrader paar mal in der Sekunde bei der Datenbank nachfraegt obwohl es noch keine Neuigkeiten gibt, optimal waere wenn der Signalsender den Empfaenger immer dann die neue Nachricht, also das neue Handelssignal zusendet, gerade dann wenn es neu vorkommt.

Werbeanzeige