Reduzieren Sie den Speicherverbrauch in PHP, während Sie Uploads per PHP-Eingabe verarbeiten

8

Ich habe nginx 1.0.5 + php-cgi (PHP 5.3.6) ausgeführt. Ich muss ~ 1GB Dateien hochladen (1-5 parallele Uploads müssen sein). Ich versuche das Hochladen von großen Dateien durch Ajax-Upload zu erstellen. Alles funktioniert, aber PHP verbraucht viel Speicher für jeden Upload. Ich habe memory_limit = 200M eingestellt, aber es funktioniert bis zu ~ 150MB Größe der hochgeladenen Datei. Wenn die Datei größer ist - das Hochladen schlägt fehl. Ich kann memory_limit immer größer setzen, aber ich denke es ist falsch, denn PHP kann alle Speicher verbrauchen. Ich verwende diesen PHP-Code (es ist vereinfacht) um Uploads auf Serverseite zu behandeln:

%Vor%

/etc/nginx/nginx.conf:

%Vor%

/etc/nginx/sites-enabled/srv.conf:

%Vor%

Kennt jemand den Weg, um den Speicherverbrauch von PHP zu reduzieren? Danke.

    
andser 24.02.2012, 11:31
quelle

3 Antworten

4

Es gibt einen Hack, bei dem es darum geht, Content-Header vorzutäuschen und ihn von application/octet-stream auf multipart/form-data zu stellen. Dadurch wird PHP daran gehindert, $ HTTP_RAW_POST_DATA zu füllen. Mehr Details Ссылка .

    
saaj 28.06.2012 19:01
quelle
1

Ich war vorher schon im selben Schuh und habe die Dateien während des Hochladens in verschiedene Stücke aufgeteilt.

Ich benutze [1]: Ссылка "pulpload" oder versuche mit einem Java Applet Ссылка , die auch wieder verfügbar ist, wenn es Netzwerkprobleme gibt.

Das Wichtigste ist, dass Sie möchten, dass Ihre Dateien über einen Webbrowser hochgeladen werden, obwohl Sie bemerken, dass Sie das nicht in Blöcken tun können

    
Baba 25.02.2012 11:35
quelle
0

Warum versuchst du nicht, mit Flash große Dateien hochzuladen? Sie können beispielsweise swfupload ausprobieren, was eine gute Unterstützung für PHP bietet.

    
hemant 24.07.2012 14:42
quelle

Tags und Links