Bilderupload in MYSQL-DB

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Der Binärcode muss noch "irgendwie" umkonvertiert werden oder sowas...
    Bei den ganzen Sonderzeichen sind ja ' und " vorhanden...
    mit stripslashes() ging's nicht...
    Ja, denk mal nach, Was macht Stripslashes? Lies mal im Manual nach. Da findest du dann hoffentlich auch den Link zu ADDslashes.

    Kommentar


    • #17
      die ist sehr gut ;-)
      ich hab's raus...
      danke für deine Hilfe - tut mir Leid dass ich so "genervt" hab, musste das allerdings heute noch fertig bekommen ;-)

      Gute Nacht!

      Lösung:
      mysql_real_escape_string();
      Diese Funktion wird benötigt wenn man Binärcode in ein LONGBLOB Feld schreiben will...

      Kommentar


      • #18
        Original geschrieben von TobiaZ
        ...
        Wenn du dann nach durchlesen der diversen Konta-Punkte immer noch der meinung bisst, dass du BILDER IN DER DATENBANK SPEICHERN willst, dann bist du auch in der Lage dazu.
        ...
        Hallo,

        aus meiner aktiveren Zeit hier im Forum erinnere ich mich noch recht gut an nen Thread in dem einer der Hauptkontra-Punkte zu dem Thema widerlegt wurde. Da gings darum, dass man allgemein der Annahme war, dass diese großen Datenmengen die DB und damit die ganze Lösung usw. langsamer wären als die Methode nur den Pfad in der DB zu hinterlegen. Beide Methoden waren praktisch gleich schnell.

        Ich mach trotzdem auch lieber einfach den Pfad in die DB.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #19
          Original geschrieben von Quetschi
          Beide Methoden waren praktisch gleich schnell.
          Mag ich jetzt ohne Beweis so nicht glauben.
          Eine Datenbank hat generell viel zutun, größere Tabellen=langsamere Queries=overall performance versackt, mehr was über die Leitung geschoben werden muss an Daten, mehr offene Verbindungen auf Seiten der DB, länger offene Verbindungen seitens der DB, weniger Möglichkeiten das ganze direkt im RAM zu halten -> mehr Festplattenzugriffe, demnach weniger Festplattenzugriff für die wirklich wichtigen Queries zum Anzeigen von Websiten, ...

          Da ist es für die Datenbank mit Sicherheit besser, wenn die Bilder direkt auf dem webserver liegen, oder per NFS sogar auf einen weiteren Server ausgelagert und direkt von da aus ausgeliefert werden (sofern der webserver mit dem apache schon gut ausgelastet ist)

          Die Queries an sich sind wohl gleich schnell, da BLOB und TEXT-Felder in myisam nur als Pointer im Datensatz gespeichert werden, aber da hängt ja noch so viel mehr mit dran; s.o.

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #20
            ok, einverstanden bin ich mit
            länger offene Verbindungen seitens der DB,
            nicht einverstanden mit:

            größere Tabellen=langsamere Queries=overall performance versackt,
            der zusammenhang ist nicht linear (ich stelle ihn mir in etwa logarithmisch vor, zumindest vom verlauf), auf einer 2 gb db laufen die queries _nicht_ 1000 mal länger, als auf einer, die 2 mb groß ist. der unterschied ist m.e. _nicht signifikant_, obwohl man in einem konkreten fall natürlich eigene messungen durchführen sollte.
            mehr was über die Leitung geschoben werden muss an Daten,
            aus der sicht der "leitung" (traffic) sind es gleich viele daten. du meinst wohl die daten auf der ipc ebene. hier wird der zeitverlust zwar viel "linearer" sein, aber afaik ist auf diesem gebiet eh nicht viel los, d.h. der unterschied wird wiederum nicht signifikant.
            mehr offene Verbindungen auf Seiten der DB,
            es sind doch genau so viele wie sonst immer?
            weniger Möglichkeiten das ganze direkt im RAM zu halten -> mehr Festplattenzugriffe
            zumindest haben db irgendwelche caching methoden. die der os sind m.w. nicht so umfangreich. also sollte eine db mehr "im ram" halten können, als das dateisystem. ist dem nicht so? schließlich kannst du (grob hochgerechnet) mittels einer db 50% einer 2gb-tabelle locker cachen, während das dateisystem (das auch nur dank os) irgendwo unter dem einstelligen bereich bleibt.

            Kommentar


            • #21
              Original geschrieben von ghostgambler
              Mag ich jetzt ohne Beweis so nicht glauben.
              Hab jetzt ne halbe Ewigkeit gesucht aber den Thread nicht mehr gefunden - ich glaub es war mrhappiness oder Abraxax der das dann trotz anfänglicher Skepsis mal getestet hat - weiß nicht mehr um was es genau ging usw. - aber in manchen Situationen war die Methode DB auslesen->imagecreate...()->auswerfen ein schönes Stück performanter als die häufig bevorzugte Methode Pfad in DB und dann einfach in img-Tag.

              Egal - ist bestimmt schon 2 Jahre oder so her - den Thread hat ich mir irgendwie im Kopf behalten - finden tu ich ihn leider nicht mehr.
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #22
                Original geschrieben von penizillin
                zumindest haben db irgendwelche caching methoden. die der os sind m.w. nicht so umfangreich. also sollte eine db mehr "im ram" halten können, als das dateisystem.
                Das Auslesen von Bilddaten aus dem Dateisystem ist mit "Datei suchen, Datei auslesen, auf die Leitung damit" getan. Da braucht gar nicht viel gecached werden.

                Ja, die DB mag meinetwegen ein paar BLOBs "cachen" können. Variiert es aber sehr stark, welche angefordert werden, muss schon bald wieder "geswapped" werden.

                Original geschrieben von Quetschi
                aber in manchen Situationen war die Methode DB auslesen->imagecreate...()->auswerfen ein schönes Stück performanter
                (Der Zwischenschritt imagecreate wird nicht vorkommen, wenn du "fertige" binäre Bilddaten in der DB vorliegen hast.)
                Du wirfst hier aber jedes mal ein (PHP-)Script an, welches die Daten erst mal von der DB holen, und an den Client weiterreichen muss - auch das kostet wieder Speicher, den andere Prozesse/Instanzen vielleicht sinnvoller nutzen könnten.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  Original geschrieben von wahsaga
                  (Der Zwischenschritt imagecreate wird nicht vorkommen, wenn du "fertige" binäre Bilddaten in der DB vorliegen hast.)
                  Du wirfst hier aber jedes mal ein (PHP-)Script an, welches die Daten erst mal von der DB holen, und an den Client weiterreichen muss - auch das kostet wieder Speicher, den andere Prozesse/Instanzen vielleicht sinnvoller nutzen könnten.
                  Stimmt - Header schicken->Daten raus sollte reichen - glaub der Typ der den Thread damals eröffnet hatte, hat da aber noch irgendwas damit angestellt - bin mir aber nicht mehr sicher- ist zu lange her. Wenn ich nur diesen Thread noch finden würd.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #24
                    Original geschrieben von penizillin
                    der zusammenhang ist nicht linear (ich stelle ihn mir in etwa logarithmisch vor, zumindest vom verlauf), auf einer 2 gb db laufen die queries _nicht_ 1000 mal länger, als auf einer, die 2 mb groß ist. der unterschied ist m.e. _nicht signifikant_, obwohl man in einem konkreten fall natürlich eigene messungen durchführen sollte.
                    Wie gesagt, myisam verwendet Pointers für Text/Blob, da ist es sowieso erstmal egal.
                    Bei innodb sieht das ganze schon wieder anders aus, und ob die Tabelle dann 10 MB groß ist (was auch für mehrere Tausend Datensätze ausreicht), oder mal eben 10 Gigabyte, nur weil ein paar Bilder mit drin sind, das macht einen Unterschied, einen signifikanten Unterschied ^^;

                    aus der sicht der "leitung" (traffic) sind es gleich viele daten. du meinst wohl die daten auf der ipc ebene. hier wird der zeitverlust zwar viel "linearer" sein, aber afaik ist auf diesem gebiet eh nicht viel los, d.h. der unterschied wird wiederum nicht signifikant.
                    Nein, ich meine den Traffic zwischen Webserver und DB-Server, der dann wiederum nicht für andere Queries zur Verfügung steht, und obwohl es mittlerweile 1Gig-Ethernet-Karten gibt, verbauen erstaunlich viele RZs die billigen 100MB-Dinger - nein ich weiß nicht warum - was dann wiederum erstaunlich schnell zu einem Engpass werden kann

                    es sind doch genau so viele wie sonst immer?
                    Offene Verbindungen. Dadurch, dass mehr Daten geschoben werden müssen bleiben die Verbindungen länger offen, mehr Threads seitens mysql, mehr Ram-Verbrauch, weniger Ram allgemein zur Verfügung

                    zumindest haben db irgendwelche caching methoden. die der os sind m.w. nicht so umfangreich. also sollte eine db mehr "im ram" halten können, als das dateisystem. ist dem nicht so?
                    Keine Ahnung, ich weiß dass das FS cached, aber ich weiß nicht wie gut/schlecht.

                    Man sollte auch nicht vergessen, dass es wesentlich einfacher ist per lighty und statischen Files Client-seitiges Caching zu bewirken. Das ganze per PHP und Header-calls nachzubauen benötigt auf dem Webserver wieder mehr Ressourcen.

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar

                    Lädt...
                    X