[PHP] Größe einer Variable begrenzt?

CrazyWolf

Lt. Commander
Registriert
Jan. 2004
Beiträge
2.039
Hallo,

ich habe da mal eine Frage / ein Problem.
Und zwar folgendes Szenario:

Ich hab ein Upload Script, und habe dort nun die Möglichkeit eines Uploads via URL integriert.
Zum Vorgang:
Ich stelle eine Verbindung zur Datei her und lade die Stück für Stück in eine Variable.
Die wird danach am Stück in eine neue Datei geschrieben.

Das funktioniert soweit auch. Bis zu einer Größe von 22 MB, was auch schon klasse ist.
Bei größeren Dateien kommt nach kurzer Zeit: Server nicht gefunden.

Ich wüsste nur gern wo hier die Begrenzung ist. Sollte ich besser die neue Datei Stück für Stück schreiben? Geht so viel überhaupt in eine Variable?
Irgendwie muss man ja auch Grenzen rausfinden können. Wie beim Dateiupload, der ja von PHP auch begrenzt ist ( 10 MB im Normalfall )
Wie kann ich rausbekommen wie viel Daten das Script letztendlich verarbeiten kann?

Danke schonmal,
Andreas :)
 
Hey,
so weit wie ich weiß, gibt es zwei Einschränkungen eine hast du ja benannt, eine weiter ist ein Timeout des Servers beide kannst du jedoch erhöhen.
Eine Variable zu füllen halte ich nicht für sinnvoll, da variablen begrenzte Kapazitäten haben.
Eine Andere Möglichkeit wäre ein Array versehen mit einem Zähler zu füllen.
Das könnte dann so aussehen

PHP:
$arr=array();
$arr[$index]=$binarytxt;
$index++;
Oder wie du schon sagtest die Inhalte in ein File schreiben.

Grüße Ronny
 
Lass dir mal per phpinfo() die Werte der PHP Installation ausgeben und suche da nach "upload_max_filesize". Dieser Wert beschränkt den Upload von Dateien auf x Megabyte. Den Wert kann man in der php.ini, falls du zugriff drauf hast, verändern. Würde ich aber nicht machen, weil es eben auch nen Timeout geben kann, weil nen Upload von 50 MB z.B. auch schon recht viel Zeit in Anspruch nehmen kann. Ich würde das nur für kleinere Dateien empfehlen.
 
ronny1978 schrieb:
Eine Variable zu füllen halte ich nicht für sinnvoll [...] Eine Andere Möglichkeit wäre ein Array [...]

und du glaubst, dass ein array mehr speicher verbrauchen darf als ein string? mal davon abgesehen, dass beide in einer variable abgelegt werden koennen.


ronny1978 schrieb:
PHP:
$arr=array();
$arr[$index]=$binarytxt;
$index++;

oder halt einfach

PHP:
$arr[] = $binarytext;
 
Ja das denke ich, ist aber nur ne Meinung. Meine Überlegung ist das jedes Array Element mit einem bestimmten Wertebereich gefüllt werden kann z.B. strings

$arr[0]=string
$arr[1]=string

usw. Soweit wie ich es verstanden habe liest er seine Werte Zeilenweise in sein string Element
 
Zuletzt bearbeitet:
Hi,
wälzt doch mal ein bisschen die Doku. Dort steht, dass die String-Länge absolut egal ist. Von der PHP-Seite gibt es keine Beschränkungen. Da würde ich mir eher um den Server-Rechner Gedanken machen...
Übrigens gibt es 3 Größenbegrenzungen für den Datei-Upload: upload_max_filsize, post_max_size und ggf. memory_limit
Desweiteren gibt es noch weitere Beschränkungen, die dich vom größeren Upload abhalten können: max_execution_time, max_input_time, ...
Je nach Konfiguration des Servers kannst du diese Beschränkungen mit Hilfe von ini_set() lockern bzw. aufheben.

MfG, Gobble-G


PS: Das mit dem Array würde ich lassen. Der Verwaltungsaufwand ist sicher um ein Vielfaches größer, als bei einem einfachen String.
 
Zurück
Oben