PHP Dateiupload

09/23/2014 09:56 SIEЯRA#1
Heyho,
ich habe ein PHP/Jquery/AJAX System geschrieben, welches Datensätze aus einer SQL-Datenbank verwalten soll.

Dort habe ich ein Dateiupload für Dokumente, Bilder etc.
Diese Dateien werden in einem Unterordner "files" abgelegt und als eindeutige ID wird ein Ordner im Ordner "files" erstellt, dessen Namen diese ID ist.

Sprich:
Code:
/files/ID/Dokumente Der ID
Ich möchte das ganze aber nun auslagern und nicht direkt in dem Webverzeichnis meines Windows Servers liegen haben, da dieser anscheind deshalb täglich langsamer wird.

Bsp. auf einen anderen Client im Netzwerk?

Habt ihr da eine Idee, wie ich das Lösen kann?
09/23/2014 10:37 MrDami123#2
Es könnte auch daran liegen, dass dein Code nicht optimal ist. Wenn du z.B. auf die Datenbank zugreifst und alles eingelesen wird dauert es länger, je mehr Dateien hochgeladen werden.

Wenn du die Dateien aber nicht auf deinem Webserver speichern möchtest, was bei einer großen Datendichte auch keine gute Idee ist, würde sich eine Cloud anbieten, wie sie von Google, Amazon, etc. angeboten wird.
Ich bin mir nicht sicher, ob man dort auch Scripts ausführen kann, oder lediglich die Dateien speichern kann.
jQuery(Ajax)<->Websever(PHP)<->Cloudserver

Wichtig ist, dass du keine Dateien überträgst, sondern nur den abrufbaren Link der Dokumente. Dadurch läd der Browser des Users die Datei von der Cloud und es blockiert die Geschwindigkeit deines Webservers nicht.
09/23/2014 11:06 SIEЯRA#3
Quote:
Originally Posted by MrDami123 View Post
Es könnte auch daran liegen, dass dein Code nicht optimal ist. Wenn du z.B. auf die Datenbank zugreifst und alles eingelesen wird dauert es länger, je mehr Dateien hochgeladen werden.

Wenn du die Dateien aber nicht auf deinem Webserver speichern möchtest, was bei einer großen Datendichte auch keine gute Idee ist, würde sich eine Cloud anbieten, wie sie von Google, Amazon, etc. angeboten wird.
Ich bin mir nicht sicher, ob man dort auch Scripts ausführen kann, oder lediglich die Dateien speichern kann.
jQuery(Ajax)<->Websever(PHP)<->Cloudserver

Wichtig ist, dass du keine Dateien überträgst, sondern nur den abrufbaren Link der Dokumente. Dadurch läd der Browser des Users die Datei von der Cloud und es blockiert die Geschwindigkeit deines Webservers nicht.
Erst mal vielen Dank für die Antwort.
Die Dateien sind gar nicht in der Datenbank hinterlegt. Der Uploader liest und schreibt direkt in die Verzeichnisse. Gibt es da etwas, was dir aus dem Kopf raus einfallen würde?

Also welche Cloud sich da empfehlen würde für eine betriebliche Nutzung.
09/23/2014 22:46 Hyukisawa#4
Was für einen Server hast du den ? (leistung)
und wv user benutzten dein Fileupload...?
09/24/2014 20:50 MrDami123#5
Ich bin leider selber noch nicht soweit, dass ich genaue Infos darüber verteilen kann.
Es gibt meiner Meinung nach aber einen großes Unterschied zwischen einer einfachen Lösung der Bilderverwaltung, wie deiner, und speziell auf Performance ausgerichtete Systeme.

Allein schon minimal schlecht geschriebene Funktionen können sich verteilt auf viele User zu großen RAM und CPU fressenden Monstern entwickeln. Ggf. könntest du die nochmals überlesen und schauen ob die auch optimal ausgerichtet sind und möglichst wenig CPU und RAM verbrauchen.

Sonst könntest du auch die gespeicherten Bilder in einer Datenbank unterbringen in Form von der URL bzw. Datei-Pfad. Ich weiß nicht wie du das geregelt hast, aber wenn z.B. der User sein Kontrollpanel öffnet und dafür jedes mal auf dem Server eine Überprüfung stattfindet welche Dateien in welchem Ordner sind, kostet das auch Rechenkraft. Wenn dagegen der Kontrollpanel einfach die Datenbank schaut und die Infos dort ausließt, ist das wesentlich effizienter.
Wenn der Fall dann eintritt, dass der User was löscht oder uploaded wird der Server aktiv und die Datenbank anschließend aktualisiert.
09/24/2014 22:46 Hyukisawa#6
Trotzdem wäre es hilfreich zu wissen wv user das upload-system benutzten und wie die Leistung Seines Servers ist.