[erledigt] [PHP] Binärdaten aus XML
Hallo,
ich hab da mal nen Problem: (bevor ich es vergessen: ich benutze PHP5) Ich lade eine XML-Datei auf meinen Server hoch und ein PHP-Script soll das XML-File verarbeiten. In der XML-Datei sind auch binäre Daten drinnen, die folgendermaßen kodiert sind: - Originaldaten (im Hexeditor): $0A$02$AF ... - Daten in der XML-Datei: 0A02AF ... (als string) Nun will ich diese Datei, die sich dahinter befindet, in eine seperate Datei schreiben. Dabei hab ich folgende Funktion geschrieben (es ist im Moment erstmal egal, dass die Datei 1 Byte länger werden kann)
Code:
Mein Problem ist jetzt, dass diese Funktion extrem langsam ist und die Daten in der XML-Datei mehrere 100 KB bis MB haben können. Das ist so viel, dass die Ausführungsdauer der php-Datei überschritten wird.
function XMLBinaryToFile($xmlData, $TargetFile)
{ $aFile = fopen($TargetFile, 'wb'); for ($i = 0; ($i < strlen($xmlData)); $i += 4) { $Value = hexdec('0x'.substr($xmlData, $i, 4)); $arr = pack('n', $Value); fwrite($aFile, $arr) ; } fclose($aFile); } Jetzt ist meine Frage: gibt es dafür vielleicht eine viel schnellere Methode oder ist der Ansatz viel zu umständlich? |
Re: [PHP] Binärdaten aus XML
Es könnte vll. was bringen, wenn du immer 4 Bytes liest statt 2 ... und evtl. statt substr direkt über die array-notation gehst.
Ansonsten bringts vll. was auf Base64 umzusteigen, das macht die Datei dann nicht doppelt so lang sondern nnur 4/3 ;) Ansonsten: Könntest du diese Große Datei nicht einfach seperat übergeben? So wie ein Upload-Feld in einem Formular als multipart request, sodass du im xml nur noch den dateinamen reinschriebst, und die eigentliche datei seperat übergibst? Wäre imho die bessere Lösung ... |
Re: [PHP] Binärdaten aus XML
Zitat:
Zitat:
Zitat:
[EDIT] Ich hab es nun mit Base64 gemacht, was jetzt extrem schnell funktioniert. Damit ist das Thema erledigt. Danke an jfheins für den Tip mit Base64 - hab daran garnicht gedacht :stupid: Für alle, die wissen wollen, wie es geht:
Code:
function XMLBinaryToFile($xmlData, $TargetFile)
{ // $xmlData : Daten Base64 - kodiert // $TargetFile : Zieldatei // 'wb' : Schreiben + Binär $aFile = fopen($TargetFile, 'wb'); fwrite($aFile, base64_decode( $xmlData )) ; fclose($aFile); } |
Re: [erledigt] [PHP] Binärdaten aus XML
und das ganze dann nochmal mit der zLib packen ;)
dann hast du noch weniger! |
Re: [erledigt] [PHP] Binärdaten aus XML
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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