Binaer schreiben
Peter Mairhofer
- php
0 Michael Nagler0 Tom
0 Tom
Hi,
gibt es in PHP die Moeglichkeit, Daten einfach und schnell binär zu schreiben und wieder auszulesen?
Für eine Applikation hab' ich sehr komplexe Arrays in einer Session gespeichert. Davon möchte ich jetzt verschiedene in einer Datenbank speichern. Es kommt dabei nicht auf Ordnung an, sondern einfach nur darauf, dass die Daten ohne auswendige Verarbeitung einfach und schnell geschrieben/gelesen werden können.
In C täts da tolle Sachen wie
fwrite(my_array, 1, sizeof(my_array), f);
(...)
Gibts diese Möglichkeit?
Thx,
Peter
Hallo,
gibt es in PHP die Moeglichkeit, Daten einfach und schnell binär zu schreiben und wieder auszulesen?
Ja. Es hängt davon ab, wie du den File öffnest. Wenn du bei mode ein "b" anhängst, wird der File binär gelesen / geschrieben.
$handle = fopen( $file, "wb" ) or die("Fehler beim Öffnen");
fwrite( $handle, $data, strlen( $data ));
fclose( $handle );
Mit freundlichen Grüßen,
Michael Nagler
Hello,
Ja. Es hängt davon ab, wie du den File öffnest. Wenn du bei mode ein "b" anhängst, wird der File binär gelesen / geschrieben.
Das ist nicht mehr richtig. In PHP wird genauso wie in C diese Möglichkeit nur aus Kompatibilitätsgründen vorgehalten. Wie Daten geschreiben oder gelesen werden, wird ausschließlich durch die benutzte Schreib-/Lese-Funktion bestimmt.
fread() und fwrite() schreiben immer blockorientiert, was einem binären Schreiben entspreicht. fgets() liest Zeilenweise, was einem textorientierten Lesen entspricht. fputs() schreibt allerdings auch blockorientiert, also NICHT textorientiert, wie dies z.B. writeln() in Pascal tut.
Grüße
Tom
Hello,
nein, diese Möglichkeit gibt es in PHP (noch) nicht.
Bei "Arrays" hätte das in PHP auch keinen Sinn, da es sich in Wirklichkeit nicht um Arrays oder Structs oder Records handlet, sondern um mehrdimensionale Bäume, bidirektional verkettet.
Die liegen also im ganzen Speicher verstreut.
Man kann nur die sehr leistungsfähige Funktion serialize() und ihr Pendant unserialize() bemühen. Die sind immer noch 1000mal schneller als jede Festplatte.
Grüße
Tom
Moin!
nein, diese Möglichkeit gibt es in PHP (noch) nicht.
Ich habe sowas auch noch nicht vermißt.
Man kann nur die sehr leistungsfähige Funktion serialize() und ihr Pendant unserialize() bemühen. Die sind immer noch 1000mal schneller als jede Festplatte.
Die sind für dieses Vorhaben ausgezeichnet geeignet.
- Sven Rautenberg
(...)
Man kann nur die sehr leistungsfähige Funktion serialize() und ihr Pendant unserialize() bemühen. Die sind immer noch 1000mal schneller als jede Festplatte.
Thank you very matsch.
Genau nach sowas habe ich gesucht!
Peter