PDF als binary in MSSQL Datenbank pumpen

A

aightmaster

Guest
hallo zusammen

brauche dringend hilfe. wir haben in der firma ein selbst programmiertes Vertragsverwaltungstool im Einsatz. läuft einem XAMMP mit PHP 5. Die Daten werden auf einem anderen Server in einer MS SQL Datenbank gespeichert.
nun kann zu jedem Vertrag auch der original Vertrag als PDF mit angehängt werden. Das PDF wird beim Upload in ein binary umgewandelt und so in die Datenbank geschrieben. Zum Ansehen des Vertrags wird dann das PDF wieder umgewandelt und als temporäre Datei angezeigt.

Das System funktioniert an sich sehr gut, doch wenn die PDF Dateien grösser als ca. 1.5 MB werden gibt es Probleme. Zuerst war da der max_execution_timeout. Dieses Problem konnte noch einfach gelöst werden. Nun ist es aber so, dass zwar irgendwann das Script abbricht ohne Fehlermeldung und die upload maske wieder geleert ist. Aber Daten wurden keine gespeichert. Ich komme einfach nicht mehr weiter.

hier noch die funktion für das umwandeln des PDF in ein binary.


CODE
function str2bin($myStr) {
//Funktion zum umwandeln von String to Binary
$out = '';
for($i=0; $i<strlen($myStr); $i++)
$out .= str_pad(decbin(ord($myStr{$i})),8,'0',STR_PAD_LEFT);
return $out;
}





danke schon mal für alle hinweise und tipps
 
die php.ini ist eigentlich korrekt eingestellt. habe da schon alle einstellungen geprüft/angepasst.
es besteht vermutlich ein problem mit der länge der variable mit dem binary content.

kann es sein dass es eine maximale anzahl zeichen für eine variable gibt?
oder eine gebrenznug beim mssql_query statement?
 
Schalte mal das logging beim PHP ein, dort müsstest du sehen was passiert..


Abgesehen davon finde ich den Ansatz schlecht, solche Sachen in einer DB abzulegen. Du müllst lediglich die DB mit Binärdaten zu..
 
QUOTE (aightmaster @ Mi 10.1.2007, 12:13)dass zwar irgendwann das Script abbricht ohne Fehlermeldung und die upload maske wieder geleert ist. Aber Daten wurden keine gespeichert.

Dann ist die Fehlerbehandlung fehlerhaft.

Heutige Sprachen brechen 'nie so einfach ab', sondern produzieren immer irgendeinen Rückgabewert. Dann steht es zunächst an, das Script so zu überarbeiten, daß der Fehler konkret ausgegeben wird.

Ich verwende zwar kein PHP. Aber der Code sieht mir sehr abenteuerlich aus - megabyteweise Daten Byte für Byte zu bearbeiten. Und es kann durchaus sein, daß die PHP-Klassen, die auf den MS-SqlServer zugreifen, irgendwie limitiert sind und bei zu großen Blöcken abbrechen. Oder das varbinary-Feld ist bsp. auf 1.5 MB Maximalgröße eingestellt. Auch beim image-Datentyp gibt es die theoretische Grenze von 2.147.483.647 Byte, das sieht allerdings eher nach einer Begrenzung bei der Zugriffsklasse aus.
 
Zurück
Oben