Mahlzeit!
Den Hoster zu wechseln, wenn der nicht in der Lage ist, zlib-Unterstützung anzubieten, ist natürlich auch eine Idee. Eine andere wäre, den Hoster zu bitten, die zlib-Extension einzubinden -- das sollte nicht so schwer sein[1]. Wenn es sich allerdings nur um ein 08-15-Massenhosting-Paket handelt ...
Der Witz ist, dass die benötigte
DEFLATE/INFLATE-Komprimierung schon mehrfach in jedem PHP-Webhostingpaket vorhanden ist:
Der Webserver hat sicher das gzip-Modul eingebaut.
Die GDLib in PHP greift auf den gleichen Algorithmus zu, um PNG-Dateien und GD-Daeien zu packen und zu entpacken.
Die CURL-Erweiterung kann auch damit umgehen.
Leider kann man diese nicht einfach so anzapfen.
Einen Notbehelf könnte ich mir noch vorstellen, und der wäre MySQL. Dessen neuere Versionen bieten die Funktionen
COMPRESS() und
UNCOMPRESS(). Mit letzterer müsste man zlib-komprimierte Binärstrings entpacken können. Darum herum eine Funktion zu stricken, die vor dem Entpacken eventuell
nötige Header ergänzt und dann die entpackten Daten zurückliefert, sollte keine so große Herausforderung darstellen.
Allerdings muss man auch hier vorher
prüfen, ob der MySQL-Server(?) mit zlib-Unterstützung kompiliert wurde. Entsprechende Hinweise finden sich im Erklärungstext zu den Funktionen.
Und natürlich sollte man auch nicht vergessen, dass dann Daten erst vom Webserver zum Datenbankserver und von dort wieder zurückgeschickt werden müssen. Nicht besonders effektiv das Ganze ...
Deswegen auch meine Frage mit dem Brötchen-Verdienen: Als Knobelaufgabe oder Gehirnjogging in der Freizeit ist sowas sicher geeignet, im Job würde ich meine Zeit aber nur dann damit vertrödeln, wenn der Brötchengeber dafür auch seine Zustimmung gibt.
Ähnlich fährst du übrigens mit der Native-PHP-Lösung. Es sollte prinzipiell machbar sein[2], wenigstens das Entpacken nur in PHP nachzubauen. Aber die Geschwindigkeit dürfte nicht berauschend sein. Und dann müsste man immer noch jemanden finden, der den C-Quellcode nach PHP übersetzt.
Wer sich "for educational purposes" trotzdem dranwagen will:
http://www.zlib.net/ hat den C-Quellcode der zlib. (puff.c dürfte hierbei am interessantesten sein)
Auf
http://www.jcraft.com/jzlib/ gibts eine native Java-Implementierung.
Es gibt auch (native|pure) Implementierungen des Entpack-Algorithmus' in Python und LUA:
http://www.paul.sladen.org/projects/pyflate/
http://lua-users.org/wiki/ModuleCompressDeflateLua
... und (na klar) in Perl:
http://search.cpan.org/~nwclark/Comp...b-Perl/Perl.pm
--
[1] Ich hab spaßeshalber drei mir bekannte Free-Webspace-Hoster per phpinfo() geprüft. Fazit: ebytenet, kilu und lima-city haben die zlib eingebunden.
[2] Einen Entpacker für
Lauflängen-komprimierte Pixel-Daten hab ich schon mal in PHP geschrieben. Mit Drumherum (Planar-To-Chunky-Konvertierung und Schreiben in eine GD-Image-Ressource) kam der auf ca. 5 Bilder a 1024x768 Pixel, die er pro Sekunde entpackte. Aber INFLATE ist sicher nicht ganz so einfach zu bauen.