Bester Ansatz für die schnelle Debug und effizient große Bildfixierleistung Dateien hochladen Ausfalls

StackOverflow https://stackoverflow.com/questions/3966365

Frage

Betrachten sie eine normale PHP Bild-Upload-Funktionalität (nicht mit AJAX) und es tritt das Problem des großen Bild-Upload andernfalls gelegentlich - weniger häufig auf einen Testserver und häufiger auf einem anderen Test-Server. den Debugger Unter der Annahme, hat noch nicht begonnen Debuggen das Problem und es gibt keine Datei / Ordner-Berechtigungsprobleme, wie es weitergehen?

Ich bin sicher, habe ich file_uploads auf. Ich will nicht nur blind einige sichere Werte oder die Werte erhöhen, bis es funktioniert. Grundsätzlich möchte ich die Werte genau sein, wie pro meine betroffenen Module. Ich bin bereit, die Einstellungen in meinem betroffenen Module außer Kraft zu setzen, wenn dies der beste Ansatz ist.

Nach Einstellungen im Zusammenhang mit Datei-Upload , sind diese alle relevanten / zugehörigen Einstellungen -
* file_uploads
* upload_max_filesize
* max_input_time
* memory_limit
* max_execution_time
* post_max_size

  1. Finding Parameter / Werte für die betroffenen Skript -
    So dass ich herausfinden kann, wer von ihnen ist / wie viele von ihnen tatsächlich durch meinen Skript verletzt werden und verursacht den Fehler, muß ich zuerst die entsprechenden Werte für meinen Skript finden. Wie die folgenden Werte für meinen Skript finden:

    • Total hochgeladenen Dateien Größe
    • Eingabezeit
    • Speicherverbrauch
    • Script Laufzeit
    • Veröffentlicht Datengröße

    Welche Funktion (en) kann dafür verwendet werden.

    : Mit PHP-Code, denke ich, kann ich ein paar herausfinden,
    • Script Laufzeit -. Der Unterschied zwischen microtime(true) am Skript Anfang und das Ende
    • Total Uploaded Dateigröße - Foreach-Schleife auf $_FILES die Summe von ['size'] Attribute finden

    Wie der Rest wie Speichernutzung, Eingabezeit usw., um herauszufinden?

  2. Wo / Wie außer Kraft setzen
    Schließlich, wenn ich die Verletzung Einstellung (s) gefunden haben, nehme ich an erhöhen müssen / Korrekturwerte für zwei der Einstellungen. Wo die Überschreibung bewerben? Ich denke, es ist nicht richtig memory_limit usw. für alle Module in .htaccess oder in PHP-Skript zu setzen. Vielmehr ist besser nur in den betreffenden Modul Anwendung. Hab ich recht?

  3. Einstellungen für weniger Module anspruchsvolle
    Auch für andere Module, in denen viele Ressourcen nicht benötigt werden, ist es gut / weise die Einstellungen außer Kraft zu setzen, sie zu reduzieren, nachdem sorgfältig die Ressourcenanforderungen der Module zu studieren? Wird es nicht notwendig, den Ressourcenverbrauch reduzieren? Wenn ja, wie etwa mit 2 oder 3 Kombinationen dieser Einstellungen (abhängig von den Projektanforderungen, so dass sie normal Skript, Heavy-Datei-Upload-Benennung) und rief eine einzelne Funktion laden ein beliebige Kombination für jedes Modul?

  4. memory_limit Vorsichtsmaßnahmen
    In Bezug auf memory_limit wird erwähnt hier, dass -

    zu Einstellung hohen Wert kann sehr gefährlich sein, denn wenn mehrere Uploads und andere unabhängige Skripte verwendet werden gleichzeitig alle verfügbaren Speicher behandelt werden, die viel Speicherplatz verbrauchen könnte den ganzen Server als auch bewirken.

Was sind allgemeine Vorsichtsmaßnahmen, um dies zu nehmen?

Danke,
Sandeepan

War es hilfreich?

Lösung

Ein paar Ideen für das Debuggen:

Für die manuelle Prüfung, würde ich eine Reihe von Bildern mit unterschiedlichen Abmessungen, deren Netto-Größe (Breite x Höhe) steigt in kleinen Schritten vor: 100 x 100, 100 x 200, 100 x 300 .... und versuche, sie. Irgendwann konnte sie andernfalls beginnen, wenn das Problem der Speichergrenze ist. Sie könnten nur für sich selbst auf error_reporting() drehen (vielleicht einen Debug-Cookie von einer Art verwendet wird), so dass Sie sehen, was genau nicht.

Wenn das nicht möglich ist, würde ich einen Mechanismus irgendeiner Art für die Langzeitprotokollierung, dass speichert die Bildabmessungen in einer Protokolldatei oder eine Tabelle vor dem Ändern der Größe beginnt, und auch den Inhalt des $_FILES Array einrichten. Nach dem erfolgreichen Ende des Skripts, fügen Sie eine „OK“ zu diesem Eintrag. Auf diese Weise werden Sie in der Lage sein, mehr über den gescheiterten Uploads, um herauszufinden, ob sie es durch, um das Skript zu machen (und nicht vorher nicht aufgrund einer Timeout-Einstellung).

Auch für andere Module, in denen viele Ressourcen nicht benötigt werden, ist es gut / weise die Einstellungen außer Kraft zu setzen, sie zu reduzieren

Ich denke, die Antwort ist immer „nein“. Soweit ich weiß, ist die Speichergrenze die maximale Grenze des Speichers, der zugeordnet werden kann, aber dieser Betrag nicht für jede Anfrage reserviert ist. Ich habe noch nie von jemandem Feinabstimmung der Speichergrenze auf diese Weise gehört.

Wenn jedoch einige Teile des Systems (zum Beispiel des Image Resizer) eine enorm hohe Speichergrenze erfordern, kann es sinnvoll sein, bestimmte memory_limit Einstellungen, um sie nur anwenden, zum Beispiel durch eine .htaccess Einstellung .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top