Resourcenschonender Chat mit PB und PHP/MySQL

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Gamer hat geschrieben: Die Frage ist eher ob PB das so schnell mit dem Connecten hinbekommt...
bleib die ganze Zeit connectet und für dann immer deine Abfragen durch für jede Abfrage zu reconnecten wäre ja schwachsinnig... :wink:
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Du meinst InternetOpen_ + InternetConnect_ und InternetCloseHandle_ erst wenn das Programm beendet wird?
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Gamer hat geschrieben:Du meinst InternetOpen_ + InternetConnect_ und InternetCloseHandle_ erst wenn das Programm beendet wird?
Warum per API? PB interne befehle können das doch auch und du wärst Plattform unabhängig.
Zu der Frage: Ja.
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Weils per API kürzer ist... aber zeig mir lieber mal ein funktionierendes Beispiel für so eine "keep-alive-verbindung"!
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Hab leider bisher nur MySQL in verbindung mit PHP programmiert kann dazu nichts sagen. Aber wenn PHP einmal COnnectet ist kann es ja auch mehrere Querys ausführen auch mehrere male den gleichen (wie dus vorhast) also warum sollte das nicht gehen? Die verbindung wird ja durch dich abgebrochen und nicht durch den Server.
Ausserdem was ist an der Api Lösung kürzer? schickste auch deinen QueryString und bekommst deine Antwort back. Da ist doch kein Unterschied oder irre ich mich?
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Hab leider bisher nur MySQL in verbindung mit PHP programmiert kann dazu nichts sagen. Aber wenn PHP einmal COnnectet ist kann es ja auch mehrere Querys ausführen auch mehrere male den gleichen (wie dus vorhast) also warum sollte das nicht gehen? Die verbindung wird ja durch dich abgebrochen und nicht durch den Server.
Naja nach Ausgabe des PHP-Scripts ist eigentlich Ende. Warum sollte ich auch die Verbindung unbedingt halten - irgendwann sind dann zuviele Connects gleichzeitig und nichts geht mehr. Außerdem hab ich noch keine wirklich funktionierende Lösung gesehen - mit einem stinknormalen Server und MySQL/PHP kommt man da nicht weit, selbst wenn man die Ausführungszeit erhöht usw.
Ausserdem was ist an der Api Lösung kürzer? schickste auch deinen QueryString und bekommst deine Antwort back. Da ist doch kein Unterschied oder irre ich mich?
Es sind lediglich weniger Codezeilen / Bytes ;)
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Gamer hat geschrieben: Warum sollte ich auch die Verbindung unbedingt halten -
Ausserdem was ist an der Api Lösung kürzer? schickste auch deinen QueryString und bekommst deine Antwort back. Da ist doch kein Unterschied oder irre ich mich?
Es sind lediglich weniger Codezeilen / Bytes ;)
Glaube net das die ApiFunc kürzer sind meistens sind se länger aber ich lasse mich gerne des besseren belehren.
Warum die Connection gehalten werden sollte: Reconnects dauern lange und der Server denkt sich irgendwann wenn er einen Floodcheck hast das du versuchst den Server zu überlasten und kickt+bannt dich.
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Der Server kickt Dich doch aber automatisch irgendwann, genauso wie es bei FTP ein Timeout gibt...

Code: Alles auswählen

hInternet=InternetOpen_("FTP",#INTERNET_OPEN_TYPE_DIRECT,Proxy,ProxyBypass,0)
hConnect=InternetConnect_(hInternet,ServerName,#FTP_PORT,UserName,Password,#INTERNET_SERVICE_FTP,0,0)
FtpPutFile_(hConnect,datei$,#FTP_TRANSFER_BINARY,0)
InternetCloseHandle_(hInternet)
Wie sollte das in PB kürzer sein?
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

eine FTP Connection Timed Out aber nur wenn der FTp Server eine bestimmte zeit lang keine CMDs mehr erhält. Genauso wie bei MYSQL da du alle 5 Sekunden eine abfrage sendest wird nix time outen aber das mit den zulässigen Connections wäre ein Problem allerdings hast du dieses Problem schon wenn nur eine Connection allowed ist und du 2 Clients hast die durch zufall zur gleichen Zeit abfragen. Desto mehr clients desto höher die Wahrscheinlichkeit dieses Problems.

Und zu den Api Befehlen : Ok in dem Fall hattest Recht, aber wegen ein paar Bytes mehr würde ich Linux-User nicht ausbooten.
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

125 hat geschrieben:eine FTP Connection Timed Out aber nur wenn der FTp Server eine bestimmte zeit lang keine CMDs mehr erhält. Genauso wie bei MYSQL da du alle 5 Sekunden eine abfrage sendest wird nix time outen aber das mit den zulässigen Connections wäre ein Problem allerdings hast du dieses Problem schon wenn nur eine Connection allowed ist und du 2 Clients hast die durch zufall zur gleichen Zeit abfragen. Desto mehr clients desto höher die Wahrscheinlichkeit dieses Problems.
Hm, alle reden davon aber es gibt kaum Beispiele ;) Dann lieber diese etwas rudimentäre Lösung ;) Hab es grad laufen, sieht aus wie Realtime ;) Trotz 3 Sekunden Pause zwischen den Connects...
Und zu den Api Befehlen : Ok in dem Fall hattest Recht, aber wegen ein paar Bytes mehr würde ich Linux-User nicht ausbooten.
Ich kenne Linux-User ;) Für Mac gehts ja auch nicht, von daher...
Antworten