Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Kommunikation Delphi PHP. Datenstrom komprimieren (https://www.delphipraxis.net/201488-kommunikation-delphi-php-datenstrom-komprimieren.html)

DieDolly 25. Jul 2019 17:37

Kommunikation Delphi PHP. Datenstrom komprimieren
 
Ich habe ein Program was Daten an einen Webserver schickt.
Die Länge die da geschickt wird ist noch unkritisch. Aber irgendwann werde ich sicher ans Limit kommen.

Gibt es gemeinsame Methoden in Delphi und PHP, um Strings zu komprimieren und zu dekomprimieren?

Redeemer 25. Jul 2019 17:51

AW: Kommunikation Delphi PHP. Datenstrom komprimieren
 
Grundsätzlich gibt es zwei Varianten:
  • Accept-Encoding. Die Umsetzung erfolgt im Client am ehesten mit Indy und auf der Serverseite vom Webserver. PHP kriegt nichts davon mit. Ein verbreiteter Webserver unterstützt in der Regel Deflate/Gzip/Zlib (eigentlich alles dasselbe), vielleicht bzip2.
  • Nutzdaten benutzerdefiniert komprimieren. Die Umsetzung erfolgt durch einen Algorithmus deiner Wahl im Client und in PHP. Auch hier bietet sich Deflate an: In Delphi erstellst du dir einen Delphi-Referenz durchsuchenTZCompressionStream. Beachte, dass du ihn vorm Senden der Daten freigeben muss, weil er erst beim Freigeben die letzten
    Delphi-Quellcode:
    mod $10000
    Ausgabe-Byte schreibt. In PHP gibt es dann zlib_decode, das einen String dekomprimiert. Beteiligte Funktionen müssen Binary-Safe sein.

Schokohase 25. Jul 2019 19:02

AW: Kommunikation Delphi PHP. Datenstrom komprimieren
 
Ich habe schon mal Nutzdaten in der Größenordnung von 4GB an einen Webserver geschickt. Das hat zwar etwas gedauert, aber gemeckert hat der nicht.

Von welchem Größenlimit (>4GB) sprechen wir also?

DieDolly 25. Jul 2019 19:16

AW: Kommunikation Delphi PHP. Datenstrom komprimieren
 
Ich denke ich spreche hier eher über eine Zeichenkette die 100 bis 1000 Zeichen lang ist. An MB oder gar GB habe ich nie gedacht.
Ich schicke das über ein IdHTTP.Get. Das Get ruft ein Script auf, was mir dann eine gewisse Antwort zurückschickt.

Dass das überhaupt möglich ist :shock:

Schokohase 25. Jul 2019 19:20

AW: Kommunikation Delphi PHP. Datenstrom komprimieren
 
Ok, bei GET sprechen wir in der Regel von einem Limit von 8KB (abhängig vom Server).

Alles was geplant darüber hinaus geht sollte man per POST abschicken. Dort hat man dann quasi kein echtes Limit mehr.

Rolf Frei 25. Jul 2019 19:22

AW: Kommunikation Delphi PHP. Datenstrom komprimieren
 
100 - 1000 Bytes ist absolut unkritsch. Ich glaube bis 4K kann eine GET URL gross sein. Ich würde aber dennoch ein Post nutzen, da gibt es keine Beschränkung.

DieDolly 25. Jul 2019 20:33

AW: Kommunikation Delphi PHP. Datenstrom komprimieren
 
Ich suche mich gerade seit etwa 10 Minuten kaputt und frage mich, warum die Daten mit Post kaputt beim Server ankommen.
Vorher darf man die Daten natürlich nicht encodieren (Leerzeichen umwandeln beispielsweise).

Ich lasse den Server für alle Fälle nochmal htmlentities über alle Parameter laufen. Nur für den Fall.

Bbommel 26. Jul 2019 06:53

AW: Kommunikation Delphi PHP. Datenstrom komprimieren
 
Hast du beide, also Client und Server, selbst in der Hand? Dann könntest du deine Infos, die du an den Server senden willst, per POST senden (wie ja hier schon geschrieben wurde) und dann nicht als Parameter, sondern einfach im Body des POST. Das macht es viel entspannter und gibt dir mehr Freiheiten. Dazu musst du aber natürlich auch die php-Seite anpassen dürfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz